端口扫描

nmap实用命令行技巧

Nmap核心功能

http://nmap.org/docs.html

主机发现(Host Discovery)

用于发现目标主机是否处于活动状态(Active)。

Nmap提供了多种检测机制,可以更有效地辨识主机。例如可用来列举目标网络中哪些主机已经开启,类似于Ping命令的功能。

端口扫描(Port Scanning)

用于扫描主机上的端口状态。

Nmap可以将端口识别为开放(Open)、关闭(Closed)、过滤(Filtered)、未过滤(Unfiltered)、开放|过滤(Open|Filtered)、关闭|过滤(Closed|Filtered)。默认情况下,Nmap会扫描1000个常用的端口,可以覆盖大多数基本应用情况。

版本侦测(Version Detection)

用于识别端口上运行的应用程序与程序版本。

Nmap目前可以识别数千种中应用的签名(Signatures),检测数百种应用协议。而对与不识别的应用,Nmap默认会将应用的指纹(Fingerprint)打印出来,如果用于确知该应用程序,那么用户可以将信息提交到社区,为社区做贡献。

操作系统侦测(OS detection)

用于识别目标机的操作系统类型、版本编号及设备类型。

Nmap目前提供了上千种操作系统或设备的指纹数据库,可以识别通用PC系统、路由器、交换机等设备类型。

防火墙/IDS规避(Firewall/IDS evasion)

Nmap提供多种机制来规避防火墙、IDS的的屏蔽和检查,便于秘密地探查目标机的状况。

基本的规避方式包括:分片(Fragment)/IP诱骗(IP decoys)/IP伪装(IP spoofing)/MAC地址伪装(MAC spoofing)等等。

NSE脚本引擎(Nmap Scripting Engine)

NSE是Nmap最强大最灵活的特性之一,可以用于增强主机发现、端口扫描、版本侦测、操作系统侦测等功能,还可以用来扩展高级的功能如web扫描、漏洞发现、漏洞利用等等。Nmap使用Lua语言来作为NSE脚本语言,目前的Nmap脚本库已经支持350多个脚本。


-sS TCP SYN 扫描 (又称半开放,或隐身扫描)

-P0/-Pn 绝大多数主机都拒绝ICMP,不加这个参数无法扫描

-sV 打开系统版本检测

-O 尝试识别远程操作系统

-sT (TCP connect()扫描)当SYN扫描不能用时

-p 指定端口(Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9)

-oG (Grep输出)

-sP 该选项告诉nmap仅仅进行ping扫描(主机发现),然后打印出对扫描做出响应的那些主机。

-T 设置时间模版 如:-T4 针对TCP端口禁止动态扫描延迟超过10ms,-T5对应值为5ms。

-D 使用诱饵隐蔽扫描 为使诱饵扫描起作用,需要使远程主机认为是诱饵在扫描目标网络。

-sL 列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机,不发送任何报文到目标主机。

-R (为所有目标解析域名)告诉nmap永远对目标ip地址作反向域名解析。一般只有当发现机器正在允许时才进行这项操作。

-F  (快速(有限的端口)扫描)

-vv 让你明白扫描的详细过程,如果发现哪些过程是你不需要的,可以马上调整

-n  在大范围扫描地址时侯没有用这个参数导致nmap异常慢,半天卡到那我却不知道为什么,结果加-vv参数发现,原来是把每个ip都dns解析一遍,加-n就可以不解析dns了

--script=showSMTPVersion.nse  nmap加入了脚本扫描引擎,可以扫描网站目录还有远程溢出和弱口令等

-iL c:\xx.txt   读取c:\xx.txt的主机列表文件的ip

-oN c:\Vulnerable.txt  将探测结果保存在c:\Vulnerable.txt

-oX 以xml形式输出

-A 同时打开操作系统指纹和版本检测

-v 详细输出扫描情况.

--mtu

--send-eth

--data-length

--source-port

--randomize-host

-f



1) 获取远程主机的系统类型及开放端口

nmap -sS -P0 -sV -O <target>

这里的 < target > 可以是单一 IP, 或主机名,或域名,或子网

2) 列出开放了指定端口的主机列表

nmap -sT -p 80 -oG – 192.168.1.* | grep open

3) 在网络寻找所有在线主机

nmap -sP 192.168.0.*

或者也可用以下命令:

nmap -sP 192.168.0.0/24

指定 subnet

4) Ping 指定范围内的 IP 地址

nmap -sP 192.168.1.100-254

5) 在某段子网上查找未占用的 IP

nmap -T4 -sP 192.168.2.0/24 && egrep "00:00:00:00:00:00" /proc/net/arp

6) 在局域网上扫找 Conficker 蠕虫病毒

nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 192.168.0.1-254

7) 扫描网络上的恶意接入点 (rogue APs).

nmap -A -p1-85,113,443,8080-8100 -T4 --min-hostgroup 50 --max-rtt-timeout 2000 --initial-rtt-timeout 300 --max-retries 3 --host-timeout 20m --max-scan-delay 1000 -oA wapscan 10.0.0.0/8

8 ) 使用诱饵扫描方法来扫描主机端口

sudo nmap -sS 192.168.0.10 -D 192.168.0.2

9) 为一个子网列出反向 DNS 记录

nmap -R -sL 209.85.229.99/27 | awk '{if($3=="not")print"("$2") no PTR";else print$3" is "$2}' | grep '('

10) 显示网络上共有多少台 Linux 及 Win 设备?

sudo nmap -F -O 192.168.0.1-255 | grep "Running: " > /tmp/os; echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) device"


首先扫描存活的主机,然后使用cut命令只取ip到一个文件,在扫描该文件中的ip。

nmap -sP 192.168.8.1-254 -oN /root/Desktop/test.log

cat test.log | grep for | cut -d ' ' -f5 > test2.log

nmap -sS -iL test2.log


TCP空闲扫描

msf > use auxiliary/scanner/ip/ipidseq

msf > set RHOST 192.168.7.0/24

msf > set THREADS 80

msf > run

nmap -sS -sI 空闲IP 目标IP




############防火墙/IDS规避(Firewall/IDS evasion)

nmap -sS -v -f --mtu 32 --send-eth --data-length 50 --source-port 99 --randomize-host -T 5 192.168.1.1/24


############NSE脚本引擎(Nmap Scripting Engine)

nmap --script=smb-enum-users 192.168.80.129

nmap --script=smb-brute 192.168.80.129

nmap --script=smb-pwdump --script-args=smbuser=epp,smbpass=password 192.168.80.129

nmap --script=smb-brute --script-args=userdb=usernames.txt,passdb=password.txt 192.168.80.1/24

nmap --script=smb-enum-shares 192.168.80.129

nmap --script=smb-check-vulns 192.168.80.129


smb-pwdump.nse 使用(bt5):

root@bt:~# wget http://swamp.foofus.net/fizzgig/pwdump/pwdump6-1.7.2-exe-only.tar.bz2

root@bt:~# tar -jxvf pwdump6-1.7.2-exe-only.tar.bz2 -C /usr/local/share/nmap/nselib/data

root@bt:/usr/local/share/nmap/scripts# wget https://svn.nmap.org/nmap-exp/dev/nmap/scripts/smb-pwdump.nse

root@bt:~# nmap --script=smb-pwdump.nse --script-args=smbuser=test,smbpass=123456 192.168.1.108 -p 135,445,139

nmap -p445 --script=smb-pwdump --script-args=smbuser=ron,smbpass=iagotest2k3,rtable=/tmp/alpha/*.rt <host>




ProxyScan
nmap --proxy http://host1,socks5://host2 --proxy socks4://user@host3,http://user:pass@host4 -sK targetsnmap --proxyfile proxies.txt targets

Perhaps

nmap --proxy ftp://anonymous@ftphost -PK -sK