在内网渗透中,为了扩大战果,往往需要寻找更多主机并且对这些主机进行安全检测或帐号密码测试,所以主机发现这个步骤必不可少。我们如何在不实用扫描器的情况下发现更多主机呢?
确定IP段
通常内网地址分三段:10.0.0.0/8、172.16.0.0/12以及192.168.0.0/16。在没有做任何操作之前,我们可以大概知道内网的IP地址段,不过也有些公司,在内网又会有公网IP的情况,也就是说在内网中可以访问到的IP段有很多。
下面就主要介绍一下收集IP段的方式。
查看本机的IP地址
Windows下使用:
ipconfig /all
Linux下使用:
ifconfig -a
以Windows为例,执行结果如图:
从图中看到,我本机的IP以及下面的子网掩码,可以说明我所在的IP段是一个C段,我们就可以首先探测一下我所处的IP段,即:192.168.188.0/24。
图中还有一个IP值得注意,就是dns服务器的IP,通常在内网中,DNS服务器的IP地址未必与我们在同一个C段或者B段,所以从这里也可以看到一个存在的IP段,也是我们要做主机发现扫描的目标IP段。
查看路由表
Windows下使用:
route print
linux下使用:
route -n
以Windows为例,结果如图:
在上图可以看出,在路由表中也存在我们上面确定的IP段,这是我自己家的网络,所以没有那么复杂,大家在实际环境或者公司网络中可以看到有多个IP段,这些IP段都是我们可以访问到的,也是要做主机发现扫描的目标IP段。
查看本地连接信息
Windows下执行:
netstat -ano
linux下执行:
netstat -anp
以Windows为例执行结果如图:
从图中看到有很多的IP连接信息,我们并没有看到内网的IP地址,那是因为内网没有主机与我这台主机相连,你想象一下,如果我这台主机是台服务器,那么内网用户访问服务器时必定会有连接出现,这也是我们收集内网IP段信息的一种方式。
利用net命令
我们知道,在Windows内网环境下,我们可以使用
net view
命令用于显示一个计算机上共享资源的列表。我们从这个资源列表可以获取到一些主机名,然后解析出IP地址,这样不光收集到了一些存活主机,而且还收集了一些IP段。由于没有环境,就盗用网络上的图来填补一下
我们还可以使用
net session
命令来查看管理员的登录IP,linux下可以使用
who
来查看,从这里也可以收集几个IP地址,如果管理员登录在线的情况下,盗图如下:
与上面同样的原理,我们可以远程列出像文件服务器上连接的用户信息,我们可以使用老外提供的一个工具netsess.exe来远程列举,命令如下:
netsess.exe -h dc01 或 netsess.exe dc01
结果如图:
利用dns信息
当我们进入内网的时候,第一时间,我们应该先探测一下内网的dns服务是否存在dns域传送漏洞,如果存在,我们就可以剩下很多时间并且可以获取非常全的域名列表,这个列表基本很全的包含了内网所有的存活主机。如何探测dns域传送请点我。
如果不存在dns域传送漏洞,在我们收集了一定的主机名之后,我们可以根据主机名的命名规则生成一份主机名字典,然后使用dns解析这些名字,获得IP之后,再根据IP确定IP段。
利用域信息
如果我们已经获取到一台域内的主机权限,那么我们就可以访问域内的所有信息,这是就可以通过域控制器查询加入域中的所有主机信息,可以使用如下命令获取:
dsquery computer 以及 dsquery server
获得主机以及服务器列表后,解析其IP获取IP段信息。
用以上几种方式,在新获取到一台主机权限之后做一下这个处理,就可能会收集到更多的IP段。但是有人说了,这样做多累啊,直接使用Namp或者其他大型扫描器多线程扫描内网的所有IP段不就行了,这样做当然可以,但是这个动静多大,会造成各种安全设备报警,还没赶上进一步渗透,你就直接game over了。老板给的任务完不成了,奖金没了~~~~
在内网的活动要非常谨慎,动静越小越好,否则,这篇文章的意义何在?
下面就介绍一下如何用尽量小的动静发现更多的主机。
如何扫描IP段发现存活主机
在Windows或者linux下都有一个命令:ping,这个命令的功能就是为了网管员在配置完网络后用来探测网络连通性的,我们可以利用这个工具,写一些简单脚本来批量探测主机是否存活,虽然速度慢点,但是安全可靠,不易被识别。
ping扫描
Windows下可以使用:
ping -n 1 127.0.0.1
linux下使用:
ping -c 1 127.0.0.1
知道核心命令之后,我们可以编写一个批量扫描的脚本来完成这个操作。
使用arp命令
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。在解析过IP之后会保存在本地的arp表中,所以使用以下命令可以查看本地的arp缓存表,从中获取到一些IP信息。
arp -a
Windows:
Linux:
使用nbtstat
NBTSTAT命令可以用来查询涉及到NetBIOS信息的网络机器。首先看一下帮助信息:
可以使用如下命令查看缓存信息:
nbtstat -c
查看本地的hosts文件
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。查看文件内容可以用下面的命令:
Windows:
type c:Windowssystem32driversetchosts
Linux:
cat /etc/hosts
查看本地dns缓存
dns缓存中存在我们解析过的域名信息,当然,也会存在内网中的域名信息,所以查看这些信息也有助于我们发现内网的IP段。
Windows:
ipconfig /displaydns
Linux下需要安装nscd并且配置它才能缓存dns信息,所以这里就不做介绍。
查看本地用户的连接信息
这种方式就是收集用户的使用软件的连接记录,像vpn、filezilla、securecrt、winscp、putty等需要远程连接的软件,这里就提一下,不做过多解释,大家自由发挥吧。
其他linux下的命令
findsmb
ip neigh show
smbtree 以及 smbclient -L 192.168.7.42 #由于我本地没有域环境就不做测试了
扫描工具
在确定内网中存在的IP段之后,我们需要扫描判断哪些主机存活,这样才能进一步的渗透,在之前的文章中我主要提了一个就是使用ping扫描,今天做一下补充,不管大家用不用,了解一下还是可以的。
nbtscan
nbtscan是一个扫描WINDOWS网络NetBIOS信息的小工具,下载地址:
http://unixwiz.net/tools/nbtscan.html
可以使用以下命令来发现主机:
nbtscan-1.0.35.exe 192.168.188.0/24
大家可以自行查看帮助,测试如何使用。
netdiscover
netdiscover是基于ARP的网络扫描工具,kali下自带这个工具,可以使用如下命令扫描:
netdiscover -r 192.168.88.0/24
nmap
nmap大家众所周知,非常强大的端口扫描工具,可以使用以下命令扫描存活主机:
nmap -n -Pn -T5 -sS 192.168.88.0/24
总结
本文大概介绍了在内网信息收集阶段,针对主机发现所做个各种姿势,可能有不全的地方,或者有问题的地方请大家大胆留言,不吝赐教!