端口扫描目的是 发现开放的端口 ,以及 端口背后的服务程序等 。
TCP扫描端口:基于三次握手
隐蔽扫描:不会建立完整连接,目标应用层不会留下日志记录,但网络层会。
发送SYN–发回SYN/ACK–发送RST以结束握手(不建立连接)
僵尸扫描:
1.scanner(扫描机)向zombie(僵尸机)发送SYN,ACK,zombie不知道怎么回事,返回RST和IPID=x
2.scanner(伪装成zombia的IP)向target发送SYN,target向zombia发送SYN,ACK。zombia向target返回RST IPID=X+1.。(当端口关闭则target向zombia返回RST,zombia收到RST后无操做)
3.scanner向zombia发送SYN,ACK。zombia向scanner返回RST IPID=X+2
当scanner收到的IPID两次相差2的时候,说明这个端口开放。
全连接扫描:建立完整的三次握手。
UDP:若端口关闭则返回ICMP
nmap -sU -p 531.1.1.1
nmap -il iplist.txt -p 1-200
-p(小写):指定端口
不指定端口则默认扫描1000个常用端口
hping3 1.1.1.1 --scan 80 -S
-S:SYN 隐蔽端口扫描
--spoof:伪造源地址。(本机会无法接收到目标返回的包)
nmap -sS 1.1.1.1 -p-
-sS:TCP SYN扫描。它不打开一个完全的TCP连接。它发送一个SYN报文,返回 SYN/ACK表示端口开放,而 RST (复位)表示端口关闭。
nmap -sS iL iplist.txt -p 80
nmap 1.1.1.1 -p- --open
这样写默认也是SYN端口扫描
--open:只显示open的端口。
上面自定义函数ipid(zombia):用来判断目标机器是否适合作为僵尸机。
上面6,7行函数sr1()发送后直接收一个返回包。send()发送后不接收包。
dmitry -p 1.1.1.1
dmitry -p 1.1.1.1 -o output
nc -nv -w 1 -z 1.1.1.1 1-100
for x in $(seq 20 30); do nc -nv -w 1 -z 1.1.1.1 $x ; done | grep open
nmap -sT 1.1.1.1 -p 80
nmap -sT -iL 1.1.1.1 -p 80
SYN包扫描的缺点:目标机器有防火墙过滤情况下SYN包扫描无效。这就需要全连接扫描
全连接扫描结果是最准确的。但是不隐蔽。
注意:当我们向目标发送SYN,目标返回SYN,ACK,我们的内核会认为这个包是非法的,会自动返回RST,导致连接中断。所以我们为了达到目的必须终止内核的这个功能
用这个命令可以禁止发向目标地址的RST包。
原理:iptables的工作顺序在内核之前。-A是指定规则,OUTPUT是出栈,-p是协议,后面是指定tcp特征是RST,-d是目标IP。-j指定动作,DROP是禁止。
要获取banner必须建立完整的连接。
dmitry -pb 1.1.1.1
-p 执行TCP扫描
-b 从扫描端口获得banner 默认会做常用端口的扫描。
amap -B 1.1.1.1 1-65535 | grep on
amap专门用来发现端口服务的软件。
-B 发现目标banner
nc -nv 1.1.1.1 22
nmap -sT 1.1.1.1 -p 22 --scrip=banner.nse
用banner识别准确性不高,nmap提供更强大的指纹识别服务。
amap 1.1.1.1 1-100 -q
-q 整理显示。(不然显示很乱)
nc -nv 1.1.1.1 80
nmap 1.1.1.1 -p 80 -sV
用banner识别准确性不高,nmap提供更强大的指纹识别服务。
-V 通过指纹特征识别端口后的服务。
TTL值:windows 65-128
linux/unix 1-64
某些unix 255
xprobe2 1.1.1.1
nmap 1.1.1.1 -O
直接输入p0f
详细看这里
一般利用onesixtyone发现Coummunty Strings,再利用snmpcheck提取所有可能的信息。
如果知道对方的Coummunty Strings是public
onesixtyone 1.1.1.1 public
如果不知道对方的Coummunty Strings可以暴力破解
onesixtyone -c /usr/share/doc/onesixtyone/dict.txt 58.215.76.23 -o my.log -w 100
字典目录可以用dpkg -L onesixtyone 查看
获取Coummunty Strings用这个软件提取信息
假设我们获得的串是mike
snmpwalk -v1 -c mike 192.168.131.135 > snmpout.txt 者命令会显示所有的MIB
snmpwalk -c mike -v1 192.168.131.135 1.3.6.1.4.1.77.1.2.25 获取指定MIB的信息
SMB:(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。
smb有两个最常用的端口,一个是TCP的139一个是TCP的445.新版本多用445.
-v是显示详细结果。
smb-check-vulns这个脚本是扫描可以利用的漏洞,后面是给脚本赋值.unsafe=1就是赋值。
这个脚本查的是windows的漏洞,无法扫描linux
注意:unsafe=1这个赋值会对目标进行有破坏性的扫描,如果对象是自己公司的服务器要慎重。
nmap -sA 1.1.1.1 -p22 nmap扫描会识别防火墙
用nmap发送一个SYN包再发送一个ACK包,看返回,来识别防火墙过滤规则。
lbd www.baidu.com