Linux'ta Nmap Komut Dosyası Motoru (NSE) Komut Dosyaları Nasıl Kullanılır?


Nmap popüler, güçlü ve platformlar arası bir komut satırı ağ güvenliği tarayıcısı ve keşif aracıdır. Ayrıca ağınıza bağlanan sistemlere ilişkin genel bir bakış elde etmenize de yardımcı olabilir; Canlı ana bilgisayarların tüm IP adreslerini bulmak, açık bağlantı noktalarını ve bu ana bilgisayarlarda çalışan hizmetleri taramak ve çok daha fazlasını yapmak için bunu kullanabilirsiniz.

Nmap'in ilgi çekici özelliklerinden biri de ona daha fazla esneklik ve verimlilik kazandıran Nmap Komut Dosyası Motoru'dur (NSE). Lua programlama dilinde kendi komut dosyalarınızı yazmanıza ve muhtemelen bu komut dosyalarını diğer Nmap kullanıcılarıyla paylaşmanıza olanak tanır.

Ayrıca Okuyun: Linux için Nmap Komutlarının 29 Pratik Örneği

Dört tür NSE komut dosyası vardır:

  • Ön kural komut dosyaları – Nmap'in herhangi bir tarama işleminden önce çalışan komut dosyalarıdır ve Nmap henüz bir hedef hakkında herhangi bir bilgi toplamadığında yürütülür.
  • Ana bilgisayar komut dosyaları – Nmap'in ana bilgisayar keşfi, bağlantı noktası taraması, sürüm algılama ve işletim sistemi algılama gibi normal işlemleri hedef ana bilgisayara karşı gerçekleştirmesinden sonra yürütülen komut dosyalarıdır.
  • Hizmet komut dosyaları – hedef ana bilgisayarı dinleyen belirli hizmetlere karşı çalıştırılan komut dosyalarıdır.
  • Son kural komut dosyaları – Nmap tüm hedef ana bilgisayarlarını taradıktan sonra çalıştırılan komut dosyalarıdır.

Daha sonra bu komut dosyaları, kimlik doğrulama (auth), ana bilgisayarların keşfedilmesi (yayın), kimlik doğrulama bilgilerini tahmin etmek için kaba kuvvet saldırıları (kaba<) dahil olmak üzere çeşitli kategoriler altında gruplandırılır.), bir ağ hakkında daha fazlasını keşfetme (keşif), hizmet reddine neden olma (dos), bazı güvenlik açıklarından yararlanma (istismar) , vb. Bir dizi komut dosyası varsayılan kategoriye aittir.

Not: Daha ileri gitmeden önce şu önemli noktaları not etmelisiniz:

  • Üçüncü tarafların komut dosyalarını eleştirel bir şekilde incelemeden veya yalnızca yazarlara güveniyorsanız çalıştırmayın. Bunun nedeni, bu komut dosyalarının bir sanal alanda çalıştırılmamasıdır ve bu nedenle beklenmedik veya kötü niyetli bir şekilde sisteminize zarar verebilir veya gizliliğinizi ihlal edebilir.
  • İkinci olarak, bu komut dosyalarının çoğu muhtemelen bir ön kural veya son kural komut dosyası olarak çalıştırılabilir. Bunu göz önünde bulundurarak tutarlılık amacıyla bir ön kural kullanılması önerilir.
  • Nmap, mevcut varsayılan komut dosyalarını ve kategorileri bulmak için scripts/script.db veritabanını kullanır.

Mevcut tüm NSE komut dosyalarının konumunu görmek için, terminaldeki bulma yardımcı programını şu şekilde çalıştırın:

locate *.nse

/usr/share/nmap/scripts/acarsd-info.nse
/usr/share/nmap/scripts/address-info.nse
/usr/share/nmap/scripts/afp-brute.nse
/usr/share/nmap/scripts/afp-ls.nse
/usr/share/nmap/scripts/afp-path-vuln.nse
/usr/share/nmap/scripts/afp-serverinfo.nse
/usr/share/nmap/scripts/afp-showmount.nse
/usr/share/nmap/scripts/ajp-auth.nse
/usr/share/nmap/scripts/ajp-brute.nse
/usr/share/nmap/scripts/ajp-headers.nse
/usr/share/nmap/scripts/ajp-methods.nse
/usr/share/nmap/scripts/ajp-request.nse
/usr/share/nmap/scripts/allseeingeye-info.nse
/usr/share/nmap/scripts/amqp-info.nse
/usr/share/nmap/scripts/asn-query.nse
...

NSE komut dosyaları --script bayrağı kullanılarak yüklenir; bu aynı zamanda kategorileri, komut dosyası dosya adlarını veya komut dosyalarınızın bulunduğu dizinlerin adını sağlayarak kendi komut dosyalarınızı çalıştırmanıza olanak tanır.

Komut dosyalarını etkinleştirme sözdizimi aşağıdaki gibidir:

nmap -sC target     #load default scripts
OR
nmap --script filename|category|directory|expression,...   target    

Bir komut dosyasının açıklamasını --script-help seçeneğiyle görüntüleyebilirsiniz. Ek olarak, --script-args ve --script-args-file seçenekleri aracılığıyla bazı komut dosyalarına argümanlar iletebilirsiniz; sonraki seçenek, bir dosya adı sağlamak yerine bir dosya adı sağlamak için kullanılır. bir komut satırı argümanı.

Varsayılan komut dosyalarının çoğuyla tarama yapmak için -sC işaretini kullanın veya alternatif olarak gösterildiği gibi --script=default komutunu kullanın.

nmap -sC scanme.nmap.org
OR
nmap --script=default scanme.nmap.org
OR
nmap --script default scanme.nmap.org
Örnek Çıktı
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:36 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.0027s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
80/tcp open  http
|_http-title: Go ahead and ScanMe!

Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds

Bir komut dosyasını uygun amaç için kullanmak için öncelikle gerçekte ne yaptığına ilişkin kısa bir açıklama alabilirsiniz (örneğin, http-headers).

nmap --script-help http-headers scanme.nmap.org
Örnek Çıktı
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:37 IST

http-headers
Categories: discovery safe
https://nmap.org/nsedoc/scripts/http-headers.html
  Performs a HEAD request for the root folder ("/") of a web server and displays the HTTP headers returned.

Nmap Taramalarını Gerçekleştirmek İçin NSE Komut Dosyalarını Yükleme

Aşağıda açıklanan farklı yöntemlerle tarama gerçekleştirmek için komut dosyalarını seçebilir veya yükleyebilirsiniz.

Komut Dosyası Adını Kullanma

Bir komut dosyasının ne yaptığını öğrendikten sonra, onu kullanarak bir tarama gerçekleştirebilirsiniz. Tek bir komut dosyası kullanabilir veya virgülle ayrılmış komut dosyası adları listesi girebilirsiniz. Aşağıdaki komut, hedef ana bilgisayardaki web sunucusunda yapılandırılmış HTTP başlıklarını görüntülemenizi sağlayacaktır.

nmap --script http-headers scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:39 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.27s latency).
Not shown: 996 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http
| http-headers: 
|   Date: Wed, 15 Nov 2017 05:10:04 GMT
|   Server: Apache/2.4.7 (Ubuntu)
|   Accept-Ranges: bytes
|   Vary: Accept-Encoding
|   Connection: close
|   Content-Type: text/html
|   
|_  (Request type: HEAD)
179/tcp   filtered bgp
31337/tcp open     Elite

Nmap done: 1 IP address (1 host up) scanned in 20.96 seconds

Kategorileri Kullanma

Ayrıca komut dosyalarını bir kategoriden veya virgülle ayrılmış bir kategori listesinden de yükleyebilirsiniz. Bu örnekte, 192.168.56.1 ana bilgisayarında tarama gerçekleştirmek için varsayılan ve yayın kategorisindeki tüm komut dosyalarını kullanıyoruz.

nmap --script default,broadcast 192.168.56.1

* Joker karakter kullanma

Belirli bir ad düzenine sahip komut dosyalarını seçmek istediğinizde bu kullanışlıdır. Örneğin adları ssh ile başlayan tüm komut dosyalarını yüklemek için terminalde aşağıdaki komutu çalıştırın:

nmap --script "ssh-*" 192.168.56.1

Boolean İfadelerini Kullanma

Ayrıca and, or ve değil operatörlerini kullanarak oluşturabileceğiniz boole ifadelerini kullanan komut dosyalarını da seçebilirsiniz. Boole ifadesindeki adlar bir kategori, script.db'den bir dosya adı veya tümü olabilir.

Aşağıdaki komut, varsayılan veya yayın kategorilerinden komut dosyalarını yükleyecektir.

nmap --script "default or broadcast" 192.168.56.10

Hangisi şuna eşdeğerdir:

nmap --script default,broadcast 192.168.56.10

Güvenlik açığı kategorisindekileri hariç tutan tüm komut dosyalarını yüklemek için terminalde bu komutu çalıştırın.

nmap --script "not vuln" 192.168.56.10

Bir sonraki komut biraz karmaşık görünüyor ancak anlaşılması kolaydır; varsayılandaki komut dosyalarını veya yayın kategorilerini seçer, adları ssh- ile başlayanları dışarıda bırakır:

nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10

Daha da önemlisi, komut dosyalarını yüklemek için kategorileri, komut dosyası adlarını, özel komut dosyalarınızı içeren bir dizini veya bir boole ifadesini birleştirmek mümkündür, örneğin:

nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

Argümanları NSE Komut Dosyalarına Aktarmak

Aşağıda –script-args seçeneğiyle bağımsız değişkenlerin komut dosyalarına nasıl aktarılacağını gösteren bir örnek verilmiştir:

nmap --script mysql-audit --script-args "mysql-audit.username='root', \
mysql-audit.password='password_here', mysql-audit.filename='nselib/data/mysql-cis.audit'"

Bir bağlantı noktası numarası iletmek için -p nmap seçeneğini kullanın:

nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \ 
mysql-audit.password='password_here' , mysql-audit.filename='nselib/data/mysql-cis.audit'"

Yukarıdaki komut, CIS MySQL v1.0.2 karşılaştırmasının bazı bölümlerine göre MySQL veritabanı sunucusu güvenlik yapılandırmasının denetimini gerçekleştirir. Diğer MySQL denetimleri için kendi kullanışlı özel denetim dosyalarınızı da oluşturabilirsiniz.

Şimdilik bu kadar. Daha fazla bilgiyi Nmap kılavuz sayfasında bulabilir veya NSE Kullanımına göz atabilirsiniz.

Kendi NSE komut dosyalarınızı yazmaya başlamak için şu kılavuza göz atın: https://nmap.org/book/nse-tutorial.html

Çözüm

Nmap, her sistem veya ağ yöneticisinin güvenlik cephaneliğinde ihtiyaç duyduğu gerçekten güçlü ve kullanışlı bir araçtır; NSE ona daha fazla verimlilik katar.

Bu makalede, size Nmap Komut Dosyası Motoru'nu tanıttık ve farklı kategoriler altında mevcut çeşitli komut dosyalarını nasıl bulacağınıza ve kullanacağınıza baktık. Herhangi bir sorunuz varsa aşağıdaki yorum formunu kullanarak bize yazmaktan çekinmeyin.