目录
1、利用协议主动探测主机存活
利用ICMP发现主机
利用ARP发现主机
利用NetBIOS协议发现主机
利用TCP/UDP发现主机
利用DNS协议发现主机
利用PRC协议发现主机程序
2、被动主机存活检测
利用Browser主机探测存活主机
利用ip段探测主机存活
利用net命令探测主机存活
利用arp命令探测主机存活
利用HOSTS文件探测主机存活
利用DNS缓存探测主机存活
3、内网多网卡主机发现
前提条件:
分类:
利用方法:
防御方法:
1、利用协议主动探测主机存活
在进行内网主机发现时,使用系统自带的命令或者软件可以减少在目标磁盘落地二进制文件,减少EDR终端检测与响应(Endpoint Detection and Response)的检测和拦截
利用ICMP发现主机
ICMP探测的优势在于是系统自带的,内网中终端设备一般会将该协议进行放行,并且安全设备的默认策略不会对该协议进行安全分析
比如说我们可以使用下面命令探测一个C网段中的有哪些存活的主机:
利用ARP发现主机
在利用ARP发现主机时候,可以利用arp-scan工具来发现主机,该工具会遍历预设的ip段并且发送ARP请求,如果主机回复,则会返回主机ip和MAC地址。
注:如果使用ARP扫描,尽量不要指定过大的扫描范围,否则会引起大量告警,导致权限丢失
工具下载地址:
GitHub - QbsuranAlang/arp-scan-windows-: send arp request to whole specific LAN
利用NetBIOS协议发现主机
NetBIOS协议对各种IDS、IPS、杀毒软件的规避效果比其他协议更好,因为利用NetBIOS是正常的机器名解析查询应答的过程,推荐优先使用,它的功能就是为局域网提供网络以及其他特殊的功能
NBNS协议时TCP/IP上的NetBIOS(NetBT)协议簇的一部分,它在基于NetBIOS名称访问的网络上提供主机名和地址映射方法,
nbtscan是一个命令行工具,用于扫描本地或者远程TCP/IP网络上开放NetBIOS名称服务器。
如果主机存活,则会发送NBNS消息查询对方主机名
注:如果使用nbtscan进行批量扫描,会发送大量的请求,导致安设备警告,并且该工具会落地,会增加被发现的可能
可以使用window自带的命令nbstart来指定ip标识信息
利用TCP/UDP发现主机
下面介绍一款用于TCP/UDP扫描的工具:portcheck.exe
Portcheck是一款小众的端口扫描工具,没有反病毒软件认为它是恶意软件甚至不被认为是黑客工具
下载地址:PortCheck 2.1 - TCP port check Windows 10 (portcheck-tool.com)
例如:扫描一个c网段内445端口的开放情况
利用DNS协议发现主机
我们如果得到了内部的NDS服务器地址,也就是NS记录,一般会通过DHCP自动分配
可以指定内网中的NDS服务器,然后以目标域名为规则逐个解析常见生产力系统域名的二级域名,这样就能够发现大量内部业务以及ip段
(1)Invoke-DNSDIscovery.ps1 可以用于识别内部网络/Windows域上的常用二级域名列表,此脚本可以用于在突破边界后进行内部DNS侦查
这个脚本中内置了大量的常见的二级域名,可以执行以下命令来将存在的域名保存到dns_short.csv中
Invoke-DnsDicovery -Namelist nasmes.txt -Path dns_short.csv
也可以使用-Namelist names.exe语法自定义二级域名
(2)gobusterdns是爆破二级域名工具gobuster的精简版,该巩固只用于子域名爆破支持自定义DNS服务器运行,内置精简字典,可以导入域名列表进行扫描
./gobusterdns_linux -d dm.org -r 192.168.159.1:53 -i -q
利用PRC协议发现主机程序
我们使用PRCSCAN以无须经过身份认证来访问目标的135端口并且获取目标的RPC map,然后通过解析PRC map 中的UUID判断目标主机可能存在的进行,还可以通过相关的进程判断远程主机可能开放的端口。
整个过程只需要向目标的135端口发送十几个流量包,在网络与主机层的特征和动静比较小,方便隐蔽渗透
具体的过程:
-
首先使用CS(Cobaltstrike)控制目标主机来加载PRCSCAN脚
-
执行rpcsan 192.168.159.0/24命令来使用PRCSCAN匿名探测远程C段的主机信息
PRCSCAN脚本下载地址:GitHub - JDArmy/RPCSCAN: RPC远程主机信息匿名扫描工具
2、被动主机存活检测
在发现主机后,如果使用扫描技术,在扫描的时候应该避免使用nmap等工具进行暴力扫描,因为这样会触发安全设备的告警,导致权限丢失。
最开始可以对入口点机器进行分析,得到已经存在的资产ip,从而确定更多的ip段
利用Browser主机探测存活主机
SMB协议提供了Browsing机制,客户端利用该机制来访问网络中的计算机列表
在SMB协议中,经常通过广播的方式来获取当前的网络资源,但是这会消耗大量的网络资源,
Browsing机制提供了一个计算机列表,每当一台计算机在网络中寻找另外一个计算机的时候,无需再使用广播的方式,而是直接从计算机列表中查找目标计算机,维护这个列表的计算机就成为“Browser”
Browser分为:本地Browser(地主Browser)和工作组与域的Browser(域主Browser)
-
本地的Browser是由网络中的计算机自动推举出来的,,并非事先设定好的
-
域的Browser也是自动推举出来的,但是主域控制器的权重高
可以使用nbtstat -A ipadder命令探测主机是不是主Browser
还可以借助工具使用Browsing来进行被动主机发现,比如,在Kail中可以执行python2 1.py eth0命令来进行被动主机发现
利用ip段探测主机存活
要利用IP段探测主机的存活状态,您可以使用以下方法之一:
-
使用Ping命令: 在命令提示符或终端中,您可以使用ping命令来扫描IP段中的主机。例如,如果您要扫描192.168.1.1到192.168.1.255之间的IP地址,您可以执行类似以下命令:
for /L %i in (1,1,255) do @ping -n 1 -w 100 192.168.1.%i | find "Reply"
这个命令会对该IP段中的每个IP地址执行一次ping操作,然后检查是否有回复。这样您就可以确定哪些主机是存活的。
-
使用Nmap工具: Nmap是一款功能强大的网络扫描工具,它可以用于扫描IP段中的主机,以确定哪些主机是存活的。例如,您可以执行以下命令来扫描192.168.1.0/24网段中的主机:
nmap -sn 192.168.1.0/24
这将发送ICMP Echo请求到该网段中的每个IP地址,并收集响应以确定主机的存活状态。
这些方法可以帮助您确定给定IP段中哪些主机是存活的。
请注意,对未经授权的网络进行扫描可能违反法律或网络使用政策,因此在执行这些操作之前,请确保您有权进行这样的扫描。
利用net命令探测主机存活
net use 命令用于 ipc$命名管道连接,查看计算机连接信息以及连接与断开计算机共享资源,它不带任何参数使用
执行net use命令可以列出已经建立连接的网络列表
执行net session命令可以看到其他主机连接当前主机的记录
利用arp命令探测主机存活
arp命令用于显示和修改arp缓存中的项目
arp -a命令用于记录出现的ip地址与物理地址的列表信息
利用HOSTS文件探测主机存活
很多的网络管理员为了减轻DNS服务器的压力,会将内网中的一些生产力系统域名和ip地址写到HOSTS文件中,因此从hosts中也可以看到那些主机是存活的
利用DNS缓存探测主机存活
Windows会将经DNS解析过的域名缓存下来。如果你控制了一台PC,可以查看一下它的DNS解析记录,发现一些内网中的生产力系统域名
系统中有大量的文件记录可以帮助我们发现更多的存活ip
可以输入 ipconfig /displaydns进行查看
3、内网多网卡主机发现
在内网渗透中,目标网络一般是分区域使用防火墙进行隔离的,可以通过Windows的一些接口,NetBIOS进行网卡信息的手机,用来定位多网卡主机。
在无须进行身份验证的情况下,可以获得远程主机是否有多个网卡和多个ip地址,以绕过限制,访问受保护的网络
在内网渗透中,发现内网多网卡主机可以通过以下方法实现:
前提条件:
-
你需要在目标网络内,能够直接访问目标主机。
-
目标主机上必须开启了相关的服务或接口,如IOXIDResolver、NBNS或PRC。
-
开放135端口/UDP137端口
分类:
-
IOXIDResolver接口:通过调用IOXIDResolver接口,可以获取到远程主机的多个网卡信息。
-
NBNS:通过NetBIOS Name Service (NBNS) ,可以获取到远程主机的名称和IP地址。
-
PRC:通过Port Range Classification (PRC),可以确定任意主机可以访问的网络范围。
利用方法:
-
使用IOXIDResolver接口获取远程多网卡主机:使用相关的工具或编程语言,通过调用IOXIDResolver接口,获取远程主机的网卡信息。这些信息可以包括多个IP地址和对应的网卡信息。
-
使用NBNS获取远程多网卡主机:通过发送NetBIOS请求,获取远程主机的名称和IP地址。根据不同的NetBIOS应答,可以判断目标主机是否存在多个网卡。
-
使用nextnet通过UDP137端口枚举多网卡主机
-
nextnet 192.168.159.0/24
-
-
使用PRC获取任意主机可以访问的网络范围:通过分析目标主机的端口开放情况,结合已知的端口和服务信息,确定目标主机所在的网络范围。
防御方法:
-
确保目标主机上的相关服务或接口已经关闭或限制访问。
-
配置防火墙,限制对敏感接口的访问。
-
定期更新和修补系统漏洞,以防止利用这些漏洞进行内网渗透。
-
使用网络入侵检测系统(IDS)或入侵防御系统(IPS)来监测和阻止潜在的内网扫描行为。