【AWD】主机发现与端口扫描

nmap端口扫描

比赛时建议扫两次,如果结果相同,则可信。

1
2
3
4
5
6
7
8
9
10
# 扫描 ip 地址(mask为24全扫描)
sudo nmap -sn 172.16.200.0/24
# 端口扫描(指定速率,-p-表示全端口,默认 TCP)
sudo nmap --min-rate 10000 -p- 172.16.200.131
# 强制扫描 UDP
sudo nmap -sU --min-rate 10000 -p- 172.16.200.131
# 服务与环境扫描(-sV打印服务版本,-O打印操作系统信息)
sudo nmap -sT -sV -O p-80,111,777,52497,40444 172.16.200.131
# 使用内置脚本扫描漏洞
sudo namp --script=vuln p-80,111,777,52497,40444 172.16.200.131

主机发现

不能用 kali 和 nmap 的情况下,写BASH脚本,利用 ping 命令发现主机。

1
2
3
4
# -c表示数量,-W表示超时时间,指定开放的主机ip范围
for i in {129..132};do ping -c 1 -W 1 172.16.200.$i;done
# 只打印有效的ip地址
for i in {1..254};do ping -c 1 -W 1 172.16.200.$i|grep from;done

netstate 端口扫描

nc 要使用旧版的才能端口扫描。对于没开放的端口,会有 refused 字段,利用这个过滤,2>&1表示把错误信息导向到普通信息,才能正常过滤。

1
2
# -vv尽可能详细显示信息,-z指定0数据传输
nc.traditional -vv -z 172.16.200.131 1-65535 2>&1 | grep -v refused

伪设备端口扫描

伪设备的意思是 linux 系统中所有设备被映射成一个文件,所以我们可用文件去模拟设备。

&>dev/null 把所有信息都丢掉, && 表示前面成功执行了(没有报错),才会执行后面的。就是前面找到了端口,我才会执行后面的语句。|| printf "." 方便你判断程序是否在运行。

1
2
# 括号部分是伪设备
for i in {1..65535};do (echo < /dev/tcp/172.16.200.131/$i) &>dev/null && printf "\n[+] The Open Port is: %d\n" "$i" || printf "."; done