icmp扫描
基于icmp的各种内网主机发现方式,如果防火墙过滤的icmp请求,这种方式基本就废了,但是基本上都不会过滤icmp协议的请求。除了本身自带的命令,也可以考虑使用第三方程序,比如cping
。
在win下使用icmp扫描
cmd中执行如下命令,对整个C段进行ping扫描
1
for /l %i in (1,1,255) do @ping 192.168.1.%i -w 1 -n 1 | find /i "ttl"
利用powershell对目标内网进行icmp扫描
1
2
3powershell.exe -exec bypass -Command "Import-Module C:\Invoke-TSPingSweep.ps1;Invoke-TSPingSweep -StartAddress 192.168.3.1 -EndAddress 192.168.3.254 -ResolveHost -ScanPort -Port 21,22,23,25,53,80,81,82,83,84,85,86,87,88,89,110,111,143,389,443,445,873,1025,1433,1521,2601,3306,3389,3690,5432,5900,7001,8000,8080,8081,8082,8083,8084,8085,8086,8087,8089,9090,10000"
# 目标网段,并非仅限C段,比如你也可以写成这种方式`192.168.3.1 - 192.168.31.254`
在linux下使用各类icmp扫描
最简单的方式,将下面的代码保存至shell中,赋予其执行权限,执行该脚本即可
1
2
3
4
5
6
7
8
9
10
11
for ip in 192.168.1.{1..254}
do
ping $ip -c 1 &> /dev/null
if [ $? -eq 0 ];then
echo $ip is alive ....
fi
done
或者
for i in 192.168.4.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i is alived; fi; donenmap的icmp扫描
1
nmap -sn -PE 192.168.1.0/24
arp扫描
在win下使用各种arp扫描
1 | start /b arpscan.exe -t 192.168.1.0/24 >> result.txt |
在 linux 下使用 arp 扫描
1 | wget https://nmap.org/dist/nmap-7.40.tar.bz2 |
处在别人的vpn内网(kali)
1
2
3
4
5
6
7
8
9
10
11
12netdiscover -r 192.168.1.0/24 -i eth0
msf的arp扫描模块
msf > use auxiliary/scanner/discovery/arp_sweep
msf > show options
msf > set interface eth0
msf > set smac 00:0c:29:92:fd:85
msf > set rhosts 192.168.1.0/24
msf > set threads 20
msf > set shost 192.168.1.27
msf > runmeterpreter
1
2
3meterpreter > getsystem 另外,在目标机器上扫描时,务必先提权(个人建议,会方便很多),不然扫描过程中可能会有些问题
meterpreter > run autoroute -s 192.168.1.0/24
meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.1.0/24
基于smb和netbios的内网主机发现方式
win下:
1 | nbtscan.exe -m 192.168.1.0/24 非常经典的小工具 |
linux下:1
2
3
4
5
6wget http://www.unixwiz.net/tools/nbtscan-source-1.0.35.tgz
tar -zxvf nbtscan-source-1.0.35.tgz
make
echo $?
./nbtscan -h
./nbtscan -m 192.168.1.0/24
域内扫描
1 | net view |
Ps:如果计算机名很多的时候,可以利用bat批量ping获取ip1
2
3
4
5
6
7@echo off
setlocal ENABLEDELAYEDEXPANSION
@FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO (
@FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO (
@FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k %%j)
)
)