作者名:Demo不是emo
主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构每日emo:有心者有所累,无心者无所谓
在内网渗透中,为了扩大战果,往往需要寻找更多主机并且对这些主机进行安全检测或帐号密码测试,所以主机发现这个步骤必不可少。那主机发现都有哪些方法呢?
网上有很多的主机发现工具,比如常见的nmap,arp-scan,nbtscan等等,本质都是基于协议来扫描, 有的工具基于的扫描协议一样,有的工具基于的扫描协议不一样,所以下面我们就将主机发现的方法按照其基于的协议的分类给大家讲解
目录
一:Netbios协议探测
1.nmap扫描
2.msf扫描
3.nbtscan扫描
[1].Windows
[2].Linux
二:ICMP协议探测
1.CMD扫描
2.Nmap扫描
三:UDP协议探测
1. Nmap扫描
2. Msf扫描
3. unicornscan扫描
四:ARP协议探测(重点)
1.Nmap扫描
2.Msf扫描
3.netdiscover扫描
4.arp-scan扫描(力荐)
[1].windows
[2].linux
五:SNMP协议探测
1.Nmap扫描
2.Msf扫描
六:smb协议探测
1.Nmap扫描
2.Msf扫描
3.CMD扫描
六:章末小结
1. MSF内网探测辅助模块
2. MSF域内探测辅助模块
Netbips协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的同一的命令集,作用是为了给局域网提供网络以及其他特殊功能。系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名-——特指基于NETBIOS协议获得计算机名称——解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享
如果要知道局域网内部使用的是NetBIOS协议,你可以尝试下面的方法来探测内网存活主机
Nmap肯定是内网主机发现用的特别多的工具,但很多人都只会使用他的默认扫描模式,其实他也可以配置扫描时基于的协议类型,如下面这个命令就是基于NetBIOS协议来基于扫描的
nmap -sU --script nbstat.nse -p 137 ×××.×××.××.0/24 -T4
Msf作为内网渗透的神兵利器,它也有其内置的多种扫描模块,其中也有对应不同协议的扫描,如下就是基于NetBIOS的扫描模块,选中该模块配置必要信息开始扫描即可
msf > use auxiliary/scanner/netbios/nbname
nbtscan这款工具是一个github上的项目,在kali和windows都可以使用,但是kali自带,windows需要下载
项目地址:nbtscan - NETBIOS nameserver scanner
nbtscan-1.0.35.exe -m ×××.×××.×××.0/24
nbtscan -r ×××.×××.×××.0/24
ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
这里的cmd当然是windows的cmd终端了,这种扫描方式不需要额外下其他的工具,命令如下
for /l %i in (1,1,255) do @ ping ×××.×××.×××.%i -w 1 -n 1|find /i "ttl="
同样的,Nmap也有基于ICMP协议的扫描模式,下面的命令就可以基于该协议扫描固定的c段下存活的主机
nmap -sn -PE -T4 ×××.×××.×××.0/24
UDP(User Datagram Protocol)是一种无连接的协议,在第四层-传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
nmap -sU -T5 -sV --max-retries 1 ×××.×××.×××.xxx -p 500
这个用的很少,效果还行,最大的问题就是太慢太慢了,所以用的很少
msf也有对应基于UDP协议的探测模块,如下
msf > use auxiliary/scanner/discovery/udp_probe
如果你是在linux主机下,该工具linux自带,强烈推荐使用,
unicornscan -mU xxx.xxx.xxx.xxx
这个在靶场乃至实战中用的最多,所以我会写的比较详细一点,希望对大家有帮助
root@John:~# nmap -sn -PR xxx.xxx.xxx.0/24
msf > use auxiliary/scanner/discovery/arp_sweep
这个算用的比较多的,扫描起来不是很快,但是效果还可以
netdiscover -r xxx.xxx.xxx.0/24
这个工具我只能说内网主机发现神器,windows和linux都可以用,短小精悍,在大多数环境下全部生效,速度快,效果好,kali提前有预安装,windows可以点击下方链接下载
GitHub - QbsuranAlang/arp-scan-windows-: 将 arp 请求发送到整个特定 LAN
arp-scan.exe -t xxx.xxx.xxx.0/24
探测所在网段存活的所有主机
arp-scan -l
探测指定ip所在网段的所有存活主机
arp-scan xxx.xxx.xxx.0/24
arp-scan --interface=网卡名 xxx.xxx.xxx.0/24
上面讲到的arp-scan工具确实很好用,但它偏向于黑客工具,也就是说并不是所有linux都会带有,所以相对来说广泛性会比较弱,而当你拿下一台linux,想对他的内网进行主机探测时发现它并没有arp-scan,这时候怎么办呢
这时候就要用到arping这个工具了,这个工具用于发送arp数据包,所有linux都自带,偏向于系统工具,广泛性自然没的说,但它也有缺点,就是只能对单个目标进行扫描,无法扫描某个固定网段,但是啊但是,一个循环,轻松解决,命令如下:
for i in $(seq 1 254); do arping -c 2 xxx.xxx.xxx.$i; done
//定义一个i从0遍历到254(seq 1 254就是生成1到254的全部数字)
//-c 2 意思是每台主机发送个arp包来验证存活,这个想设置多少都可以,越多越慢
//xxx.xxx.xxx.$i 这样就能取到该网段的所有ip地址
SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。
nmap -sU --script snmp-brute xxx.xxx.xxx.0/24 -T4
同理,也是用的msf自带的基于该协议的扫描模块
msf > use auxiliary/scanner/snmp/snmp_enum
Nmap也内置内对smb服务的探测参数,这时我们需要指定smb服务所在端口(不一定是445,需要根据情况判断)
nmap ‐sU ‐sS ‐‐script smb‐enum‐shares.nse ‐p 445 xxx.xxx.xxx.xxx
msf > scanner/smb/smb_version
这种方式适合windows,而且不需要额外下载其他的工具,比较方便
for /l %a in (1,1,254) do start /min /low telnet xxx.xxx.xxx.%a 445
可以看到msf和nmap基本可以完成基于各种扫描的需要,所以这两个需要详细看看(虽然arp-scan很好用哈哈),里面的模块之类的需要自己记忆一下,我这里也给大家总结了msf的扫描模块集合,这服务怎么样,到不到位?
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名字
windows/gather/arp_scanner
windows/gather/enum_ad_computers
windows/gather/enum_computers
windows/gather/enum_domain
windows/gather/enum_domains
windows/gather/enum_ad_user_comments
好了今天的内网主机发现技巧就分享就到这里了,如果有什么疑问或者想讨论的都可以私信我或者发布评论,看到都会回哦(如果有什么网安方面的小问题也可以来讨论讨论),最后,希望今天的内容能对大家有所帮助,感谢大家的阅读,respect!