域内信息搜集实战



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
2
# netsh advfirewall firewall show rule name=all | more
# netsh firewall show state

''

查看当前机器本地系统中的环境变量,主要是想瞅瞅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
2
3
4
5
6
7
8
9
10
# hostname 查看当前机器的主机名
# net start 查看当前系统已经启动的一些服务,注意这里的*scanner,很显然,已经有同行搞过,信心是不是有大了一点呢,嘿嘿……
# net session 查看当前系统正在连接的会话有哪些,权限要够,菜刀用的组件可能权限不允许,换大马会好点
# net user 查看本地所有的用户名
# net localgroup 查看本地所有的组名
# net localgroup "administrators" 查看指定组中的所有成员
# net localgroup "remote desktop users" 远程桌面组,如果你想要某个用户能进行远程桌面连接,可能需要把它加到该组中
# net accounts 查看本机的账号密码设置策略,添加用户的时候可能要注意下
# route print 打印下当前系统路由信息
# schtasks /query /fo list /v 查看本机的计划任务列表,win7以后就淘汰at了,不得不说schtasks是个非常好用的工具

找当前用户可读写目录,可能会很多,一般把根放在网站目录就好了,当然,你也可以传一些目录读写查询的小脚本来搞

1
# dir /a-r-d /s /b

setuid程序探测

除此之外,千万别忘了多去菜刀里面翻翻目录文件,兴趣能还能找到点儿有用的东西,有权限的情况下能翻多深就翻多深,另外,确实还有很多专门针对提权方面的系统信息探测,篇幅限制,到时会再单独拿出来做详细说明

0x02 搜集域内简要信息(期间务必仔细做好记录):

1
# net user /domain 查看当前域中的所有用户名,根据用户名总数大概判断域的规模

''

1
# net user epoadmin /domain 查看指定用户在当前域中的详细属性信息

''

1
2
# net accounts /domain 查看当前域的域内账户密码设置策略
# net config workstation 看看当前的登录域
1
# net view 正常情况下可以用该命令查看当前域中在线的机器有哪些,但这样看着确实不太直观,稍微用批处理搞一下把机器名对应的ip也显示出来,岂不更畅快
1
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)
)
)

''

1
2
3
4
5
6
7
8
# net view /domain 查看所有的域名称
# net view /domain:PROGRAM 查看指定域中在线的计算机列表
# net time /domain 查看主域位置,一般都会把主域作为时间服务器
# net group /domain 查看当前域中的所有组名
# net group "domain admins" /domain 看看当前域中的域管都有谁
# net group "domain computers" /domain 看看当前域中的所有的计算机名,应该是只要登录过该域计算机名都会被保存下来
# net group "domain controllers" /domain 看看域控是哪几个
# nltest /domain_trusts 查看域信任关系
1
2
3
4
5
6
7
# dsquery computer 查看当前域内的所有机器,dsquery工具一般在域控上才有,不过你可以上传一个和目标系统版本对应的dsquery
# dsquery user 查看当前域中的所有账户名
# dsquery group 查看当前域内的所有组名
# dsquery subnet 查看到当前域所在的网段
# dsquery site 查看域内网站
# dsquery server 查看当前域中的所有服务器(应该是指域控)
# dsquery user domainroot -name admin* -limit 240 查询前240个以admin开头的用户名

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账号密码岂不快哉,等等……其实,在你权限和免杀都没问题的情况下,要搜集的密码还有很多,关于更多搜集密码,猜密码的东西,后续会单独梳理出来,说了这么多废话,最终目的也只是想说明,如果大家只是照本宣科的把命令行尸走肉的过一遍,可以很负责任的告诉大家,几乎是没有任何意义的,不是吗,这里都是一些基础的不能再基础的命令,使用也极其简单,能不能拿到有用的东西,关键还在人,对信息的敏感度一定要高,细心点就好了,再说一遍,’严禁盲目,严禁盲目,严禁盲目’,其实,我也一直在强调,工具是死的,人是活的,知道你想要做什么,比怎么做更重要,这里,仅供参考,有不对的地方,麻烦大家多批评指正,说实话,这样敲命令显的确实有点儿呆萌,你可以选择把它丢到脚本中,一键搞定,不过,容错可能要做好点,万一命令执行异常了(有可能错过重要信息),就不太好了,不过,我自己还是喜欢手工,要什么记录什么就好了,干嘛非要动不动搞一大堆没用的信息,看着都累,希望大家平时也是,务必要勤记录,这绝对是个好习惯,祝大家好运,也非常期待多跟大家一起交流,毕竟,个人的力量始终是有限的