0x00 前言
在渗透中,当我们拿下一台服务器作为跳板机进一步进行内网渗透时,往往需要通过主机存活探测和端口扫描来收集内网资产。
我们将主机扫描的场景大致可分为三种,
1)直接在webshell下执行,通过系统命令或上传脚本工具进行扫描探测 ;2)通过反弹shell进行内网渗透,msf等渗透测试框架自带一些扫描模块;3)通过socks代理扫描内网(例如 proxychains+Nmap扫描)。
在合适的场景下,选择最合适的武器。比如支持存活探测的协议,包括了 ARP、ICMP、SMB、 UDP、NETBIOS、SNMP协议等;支持端口扫描的方式,包括ACK扫描、SYN扫描、TCP扫描、UDP扫描、ICMP扫描等。
0x01 Netbios协议探测
可以获得内网主机的主机名和MAC地址等信息。
1 nmap扫描
# nmap -sU --script nbstat.nse -p137 172.16.80.0/21-T4
2 msf扫描
msf5> use auxiliary/scanner/netbios/nbname
3 nbtscan扫描
项目地址:http://www.unixwiz.net/tools/nbtscan.html
下载链接:http://www.unixwiz.net/tools/nbtscan-1.0.35.exe
nbtscan-1.0.35.exe-m 172.16.80.0/24
0x02 ICMP协议探测
它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们经常通过ping检查网络连通性,通过telnet来测试指定端口连通性。使用系统自带的命令来完成C段探测,虽然效率低,但不容易触发安全规则。如果服务器开启了防火墙或者禁ping,那么就会影响探测结果。
1 Windows下使用ping命令扫描C段:
for/l %i in (1,1,255) do @ ping 172.16.80.%i -w 1 -n 1|find /i "ttl="
写入文件,写入C盘需要管理员权限,可使用管理员权限运行,或者切换盘符,内网存活主机保存在b.txt中。
E:\Tools>@for/l %i in (1,1,255) do @ping -n 1 -w 40 172.16.80.%i & if errorlevel 1 (echo172.16.80.%i>>./a.txt) else (echo 172.16.80.%i >>./b.txt)
Linux 下使用ping命令扫描C段:
for k in $( seq 1 255);do ping -c 1 192.168.99.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
2 nmap扫描
# nmap -sn -PE -T4 172.16.80.0/24 # 扫描
# nmap -sn -PE -T4 172.16.80.0/24 | grep -o'[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' # 提取ip地址
0x03 UDP协议探测
1 nmap扫描
nmap-sU -T5 -sV --max-retries 1 -p 137 172.16.80.0/24
2 msf扫描
msf5> use auxiliary/scanner/discovery/udp_probe
msf5 > use auxiliary/scanner/discovery/udp_sweep
0x04 SMB协议探测
msf smb_version
msf5> use auxiliary/scanner/smb/smb_version
0x05 MSF探测辅助模块汇总
基于MSF的内网主机探测
使用msf进行反弹shell进行内网渗透时,通过msf自带的扫描模块进行快速扫描。
主机存活探测:
auxiliary/scanner/discovery/arp_sweep ARP扫描
auxiliary/scanner/discovery/udp_sweep UDP扫描
auxiliary/scanner/netbios/nbname NETBIOS扫描
auxiliary/scanner/snmp/snmp_enum SNMP扫描
auxiliary/scanner/smb/smb_version SMB扫描
端口扫描:
auxiliary/scanner/portscan/ack TCP ACK端口扫描
auxiliary/scanner/portscan/ftpbounce FTP bounce端口扫描
auxiliary/scanner/portscan/syn SYN端口扫描
auxiliary/scanner/portscan/tcp TCP端口扫描
auxiliary/scanner/portscan/xmas TCP XMas端口扫描
auxiliary/scanner/discovery/arp_sweep #基于arp协议发现内网存活主机,这不能通过代理使用
auxiliary/scanner/portscan/ack #基于tcp的ack回复进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机
auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname #探测内网主机的netbios名字
(来源:菜鸟学信安)
(原文链接:https://mp.weixin.qq.com/s/lXFe4faYPknwmNQbbcdfkg)
发表评论