攻破HTB Nmap 模块
防火墙与IDS/IPS绕过-Easy
要求探测目标主机(10.129.29.91)操作系统名称。
1. 首先进行端口扫描
nmap 10.129.29.91 -Pn -n -vv
参数说明:
应该都不是必须的,默认探测top1000的端口
| 参数 | 说明 |
|---|---|
| -Pn | not Ping,默认目标主机在线,不必再发包探测 |
| -n | 不进行反向域名解析 |
| -vv | double verbose,显示详细过程,我最爱的参数 |
结果:
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
80/tcp open http syn-ack ttl 63
110/tcp open pop3 syn-ack ttl 63
139/tcp open netbios-ssn syn-ack ttl 63
143/tcp open imap syn-ack ttl 63
445/tcp open microsoft-ds syn-ack ttl 63
10001/tcp open scp-config syn-ack ttl 63
2. 推测ssh服务应该含有操作系统信息,尝试对其端口22使用-O参数探测
nmap 10.129.29.91 -p 22 -Pn -n -vv -O
参数说明:
| 参数 | 说明 |
|---|---|
| -p 22 | port 22,扫描22端口 |
| -Pn | not Ping,默认目标主机在线,不必再发包探测 |
| -n | 不进行反向域名解析 |
| -vv | double verbose,显示详细过程,我最爱的参数 |
| -O | OS detection,进行操作系统探测 |
无结果:
Aggressive OS guesses: Linux 4.15 - 5.6 (95%), Linux 5.3 - 5.4 (95%), Linux 2.6.32 (95%), Linux 5.0 - 5.3 (95%), Linux 3.1 (94%), Linux 3.2 (94%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (94%), ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%), Linux 5.0 - 5.4 (93%)
No exact OS matches for host
3. 使用banner脚本进行探测,该脚本连接开放的TCP端口服务,打印监听5秒得到的信息
nmap 10.129.29.91 -p 22 -Pn -n -vv --script banner
结果:
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
|_banner: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.7
4. 于是得到正确的操作系统名称为:ubuntu
防火墙与IDS/IPS绕过-Medium
要求探测目标主机(10.129.29.97)上DNS服务的版本。
1. DNS服务默认在53端口,探测一下53端口
nmap 10.129.29.97 -Pn -n -vv -p 53
被防火墙过滤,无法探测到服务版本信息。
PORT STATE SERVICE REASON
53/tcp filtered domain no-response
2. 一些防火墙虽然过滤TCP端口,但UDP端口可能没有过滤,尝试探测UDP端口53
nmap 10.129.29.97 -Pn -n -vv -p 53 -sU
参数说明:
| 参数 | 说明 |
|---|---|
| -p 53 | port 53,扫描53端口 |
| -sU | UDP scan,进行UDP扫描 |
得知UDP端口53开放:
PORT STATE SERVICE REASON
53/udp open domain udp-response ttl 63
4. 探测服务版本
nmap 10.129.29.97 -Pn -n -vv -p 53 -sUV --script dns-nsid,banner --source-port 53
参数说明:
| 参数 | 说明 |
|---|---|
| -sUV | UDP scan + Version detection,进行UDP扫描并探测服务版本 |
| --script dns-nsid,banner | 使用dns-nsid和banner脚本进行探测 |
| --source-port 53 | 使用源端口53(DNS服务端口)进行扫描,绕过防火墙过滤的常用手段 |
dns-nsid脚本请求DNS服务器的命名空间标识符(NameServer ID,NSID),询问id.server、version.bind值。
dns-nsid脚本可以等效于dig命令:
dig CH TXT bind.version @target
dig CH TXT id.server @target
值得注意的是,使用VPN连接HTB实验室时该脚本无法探测到版本信息,需要重新下载VPN或使用其提供的PwnBox进行探测。
使用PwnBox执行上述命令,执行的脚本获取到了版本信息,可看到版本信息被替换为了本题flag:HTB{GoTtgUnyze9Psw4vGjcuMpHRp}
防火墙与IDS/IPS绕过-Hard
本题要求探测目标主机(10.129.29.101)某服务的版本信息,提示为:“一个关键服务,因为我们的客户需要大量数据”,猜测是数据库服务。
1. 首先进行端口扫描
nmap 10.129.29.101 -Pn -n -vv --script banner --source-port 53
参数说明:
| 参数 | 说明 |
|---|---|
| --script banner | 使用banner脚本进行探测(顺手的事) |
| --source-port 53 | 使用源端口53(DNS服务端口)进行扫描,绕过防火墙过滤的常用手段 |
输出:
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
|_banner: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.7
80/tcp open http syn-ack ttl 63
110/tcp open pop3 syn-ack ttl 63
|_banner: +OK Dovecot (Ubuntu) ready.
139/tcp open netbios-ssn syn-ack ttl 63
143/tcp open imap syn-ack ttl 63
| banner: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID
|_ENABLE IDLE LOGINDISABLED] Dovecot (Ubuntu) ready.
445/tcp open microsoft-ds syn-ack ttl 63
50000/tcp open ibm-db2 syn-ack ttl 63
发现50000新增端口开放,服务为ibm-db2,猜测是DB2数据库服务。
2. 尝试使用db2脚本进行探测
nmap 10.129.29.101 -Pn -n -vv -sV -p 50000 --script db2-das-info --source-port 53
参数说明:
| 参数 | 说明 |
|---|---|
| -sV | Version detection,进行服务版本探测 |
| --script db2-das-info | 使用db2-das-info脚本进行探测 |
无果:
PORT STATE SERVICE REASON VERSION
50000/tcp open tcpwrapped syn-ack ttl 63
|_drda-info: ERROR
3. 尝试用ncat与50000端口建立TCP连接
ncat -nv --source-port 53 10.129.29.101 50000
参数说明:
| 参数 | 说明 |
|---|---|
| -nv | 不进行DNS解析,显示详细信息 |
| --source-port 53 | 使用源端口53(DNS服务端口)进行扫描,绕过防火墙过滤的常用手段 |
返回:
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 10.129.29.101:50000.
220 HTB{kjnsdf2n982n1827eh76238s98di1w6}
这里的HTB{kjnsdf2n982n1827eh76238s98di1w6}就是本题的flag。
可以看到服务器返回220,这通常是FTP服务的“服务就绪”(Service ready),如220 Microsoft FTP Service,这里改成了flag。
输入help,可以看到确实是FTP服务,之前的数据库服务猜测是错误的:
help
214-The following commands are recognized (* =>'s unimplemented):
214-CWD XCWD CDUP XCUP SMNT* QUIT PORT PASV
214-EPRT EPSV ALLO* RNFR RNTO DELE MDTM RMD
214-XRMD MKD XMKD PWD XPWD SIZE SYST HELP
214-NOOP FEAT OPTS AUTH* CCC* CONF* ENC* MIC*
214-PBSZ* PROT* TYPE STRU MODE RETR STOR STOU
214-APPE REST ABOR USER PASS ACCT* REIN* LIST
214-NLST STAT SITE MLSD MLST
214 Direct comments to root@nix-nmap-hard
总结
名为IDS/IPS绕过,实际做起来像是CTF题目,权当复习了。Nmap文档里有更为详细的绕过参数说明。