域内信息搜集实战
0x01 搜集本机信息:
这里就以拥有一个域内网中的普通用户[注意,这里并不是域用户哦]权限的机器的webshell作为我们整个域内渗透的开始,首先,没别的,先搜集下各种信息,主要是搜集各类账号密码,自然是翻到的越多越好(多一个有用的密码或hash就多一条生路),废话不多说,我们开始正题,从搜集本机信息开始,理论上来讲,拿到webshell的第一反应,没别的,先看下当前用户的系统权限再说,直接是system权限的这种情况咱们找时间另说,就先以一个很普通的网站用户权限,来继续我们下面的内容,whoami加上all参数可以把当前用户的sid也顺带查出来,只是告诉大家可以用这种方式查用户sid,虽然这个用户的sid没什么卵用,但如果是域管的就不一样了1
# whoami /all
接着再来看看本机的网络配置,主要是想看看当前机器是否处在内网,有几个内网,内网段分别是多少,是否是在域内网,网关是多少,dns指向的ip是哪里,当然,你也可以用wmic来查,但那个显示的并不是很完整,个人早已习惯了ipconfig /all,所以就用这个了1
# ipconfig /all
查看所有登录到当前系统中的用户状态,主要还是想看看管理员在不在(哪怕不在,最近登录过也好,加入提成了,还能抓下历史明文),当然,query的用法并非仅限于此,关于query 的更多用法,请自行查看该命令帮助1
# query user
看下当前系统中的所有网络连接(包括tcp和udp的),以及每个连接所对应的发起程序,主要是想看看有没有我们可以快速利用到的一些服务,运气好的情况下,你甚至可以看到同行的tcp马还在上面,如果是域控机器,这个连接[udp]可能会有非常多,你可以选择先把它重定向到文件然后下下来看1
2# netstat -ano | more
# netstat -anob >> portres.txt
查下本机的arp记录,看看最近和本机通信过的其它内网机器,在这里也许你会发现其它工具扫不到的机器和网段1
# arp -a
看看本机的防火墙配置及状态,win建议用’netsh advfirewall firewall’,看你心情,随便用哪个,反正只是用个工具而已,能出正确的结果即可,不纠结1
# netsh firewall show config
1 | # netsh advfirewall firewall show rule name=all | more |
查看当前机器本地系统中的环境变量,主要是想瞅瞅path里面有没有我们可以利用到的一些运行环境,比如py,java(免杀效果好,不过这个,一般权限也比较高),ps(免杀效果好),ruby,perl等等……这样一来会方便我们后续用一些外部工具1
# set
获取本机的mac,伪造mac可能会用得上1
# getmac
查看当前windows的内核版本,其实可以忽略,systeminfo一下就搞定了,如果你只是想快速的看下当前系统的内核版本,不妨用用1
# ver
查看当前系统中安装的所有软件及软件所对应的具体版本,看看有没有我们提权能用到的1
# wmic product get name,version
查看当前系统中各个分区的大概使用情况,拷文件的时候心里有个谱1
# wmic logicaldisk where drivetype=3 get name,freespace,systemname,filesystem,volumeserialnumber
看下当前系统的补丁打的如何,因为数据比较多时间较长,菜刀里面很容易超时,不过,多试几次就好了1
# wmic qfe get CSName,Description,hotfixid
当然,你还有更简单直观的命令可以选择,查看当前系统的详细配置,不过回显的内容比较多,可能也会出现超时的情况1
# systeminfo
快速定位一些能提权的补丁编号,当然,你要自己针对目标的系统(03和08以上最好分开单独准备)事先准备好一些补丁号,记得务必要在可读写目录中执行该语句,因为它要创创建临时文件1
# systeminfo>temp.txt&(for %i in (KB2271195 KB2124261 KB2160329 KB2621440 KB2707511 KB2829361 KB2864063 KB3000061 KB3045171 KB3036220 KB3077657 KB3079904 KB3134228 KB3124280 KB3199135) do @type temp.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a temp.txt
1 | # wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB3079904" 这是补丁安装后的状态 |
查看当前机器所安装的驱动,必要的时候,兴许对提权有些帮助,不过对虚拟机可能并没什么卵用,如果是实体物理机兴许还能利用上1
# driverquery
查看当前机器的开启了哪些共享1
2# net share
# net share \\hostname 查看指定的远程机器所开放的共享
1 | # wmic share get name,path,status 利用wmic查找共享 |
如果有条件的情况下,可以跟踪下路由,看看出口的公网ip,时间可能比较长(毕竟一跳一跳的走,中间一个超时就会卡很久),如果是菜刀可能会超时1
# tracert www.google.com
查看当前机器都起了哪些进程,主要是想看看用的什么杀软,什么监控,什么服务等等……心里先有个底1
# tasklist /svc
1 | # tasklist /V 看下发起进程的用户身份,当然,你只能看到你有权限看到的 |
1 | # wmic process where name='*.exe' list full 查询某个进程所对应某个具体的可执行程序是什么 |
1 | # hostname 查看当前机器的主机名 |
找当前用户可读写目录,可能会很多,一般把根放在网站目录就好了,当然,你也可以传一些目录读写查询的小脚本来搞1
# dir /a-r-d /s /b
setuid程序探测
除此之外,千万别忘了多去菜刀里面翻翻目录文件,兴趣能还能找到点儿有用的东西,有权限的情况下能翻多深就翻多深,另外,确实还有很多专门针对提权方面的系统信息探测,篇幅限制,到时会再单独拿出来做详细说明
0x02 搜集域内简要信息(期间务必仔细做好记录):1
# net user /domain 查看当前域中的所有用户名,根据用户名总数大概判断域的规模
1 | # net user epoadmin /domain 查看指定用户在当前域中的详细属性信息 |
1 | # net accounts /domain 查看当前域的域内账户密码设置策略 |
1 | # net view 正常情况下可以用该命令查看当前域中在线的机器有哪些,但这样看着确实不太直观,稍微用批处理搞一下把机器名对应的ip也显示出来,岂不更畅快 |
1 | @echo off |
1 | # net view /domain 查看所有的域名称 |
1 | # dsquery computer 查看当前域内的所有机器,dsquery工具一般在域控上才有,不过你可以上传一个和目标系统版本对应的dsquery |
0x03 尽可能多的搜集本机的各种密码数据,关键字大家随意,这里只是给几个常见的:1
2
3
4
5# dir /b /s config.* 搜集本机所有的配置文件路径
# dir /b /s login*txt 也有一些管理员笔记喜欢用txt记录一些服务配置或者密码信息
# dir /b /s login* 所有带有login字段的文件名
# dir /b /s *.bak 所有以bak为后缀的的文件名
# dir /b /s *.config 所有以config为后缀的文件名
在所有后缀为asp,ini,txt,php,aspx……的文件中找到带有password字符串文件,查询的时间可能会比较长,菜刀可能又会超时,另外,这样这里所有的查找都以当前路径为基础的1
2
3
4# findstr /si password *.ini *.txt *.asp *.cgi
# findstr /si password *.ini *.txt *.aspx
# findstr /si password *.ini *.txt *.php
# findstr /si password *.ini *.txt *.php *.xml
0x04 更多,待续……
一点小结:
关于域内信息搜集这里只是粗略零碎的提到了一些,确实还有很多很精悍的搜集技巧,都没提到,不过,那都是后话,比如,关于内网大致拓扑结构信息,端口服务信息….篇幅原因,压根也没提到,来日方长,我们还是循序渐进吧,’步子太大容易扯着蛋’,这次顶多先入个门,主要还是想借此说明,利用系统现有的工具在现有的权限条件下,我们到底能做些什么,务必要时刻谨记我们搜集信息的初衷(严禁盲目),你所搜到的每个信息,都应该有它存在的价值,也就是说后续我们到底可以拿它些什么,这非常无比的重要,举个简单例子,就拿搜集密码来说,首先我要知道哪些地方可能会存有密码,我们可能知道,各种数据库配置文件有数据库的连接密码(sa&root),各种第三方工具的配置文件中可能也保存的也有密码hash(比如,filezilla之流),浏览器中说不定保存的也有密码各种网站密码(找找有没有是目标网站的,想办法登进去传shell也是可以的),如果你运气不错,搞到了vpn账号密码岂不快哉,等等……其实,在你权限和免杀都没问题的情况下,要搜集的密码还有很多,关于更多搜集密码,猜密码的东西,后续会单独梳理出来,说了这么多废话,最终目的也只是想说明,如果大家只是照本宣科的把命令行尸走肉的过一遍,可以很负责任的告诉大家,几乎是没有任何意义的,不是吗,这里都是一些基础的不能再基础的命令,使用也极其简单,能不能拿到有用的东西,关键还在人,对信息的敏感度一定要高,细心点就好了,再说一遍,’严禁盲目,严禁盲目,严禁盲目’,其实,我也一直在强调,工具是死的,人是活的,知道你想要做什么,比怎么做更重要,这里,仅供参考,有不对的地方,麻烦大家多批评指正,说实话,这样敲命令显的确实有点儿呆萌,你可以选择把它丢到脚本中,一键搞定,不过,容错可能要做好点,万一命令执行异常了(有可能错过重要信息),就不太好了,不过,我自己还是喜欢手工,要什么记录什么就好了,干嘛非要动不动搞一大堆没用的信息,看着都累,希望大家平时也是,务必要勤记录,这绝对是个好习惯,祝大家好运,也非常期待多跟大家一起交流,毕竟,个人的力量始终是有限的