简述
在通过各种方式拿到系统的shell之后,首先我们要苟住,现在稍微成规模的企业一般都开始注重安全,获取到shell的服务器上面极大可能安装着杀毒软件、主机安全agent等东西,不可妄动啊,万一引起管理员注意,好不容易拿下的权限可能就要丢失了;而且进行内网扫描之类的会被内网流量检测之类的设备发现,所以我们首先进行一波信息收集。看很多大佬都说内网渗透的本质是信息收集。
很多东西不能只知道有这么回事,连目的都不晓得真是没有深入进行学习。目前笔者的实力还是很有欠缺的,只能尽量的根据先行者的脚步进行学习,并根据自己目前的理解进行总结一些,日后若有了自己认为更加正确的理解,会重构本篇文章的。
基础信息收集
这部分信息收集是最基础信息的收集,对系统以及系统上安装的什么软件进行第一步的探测。
查看系统版本信息:
最最基础的信息之一,弄清楚处于什么WIndows系统版本
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" 查询操作系统和版本信息 英文系统
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" 查询操作系统和版本信息 中文系统
查看系统体系结构
弄清楚系统的位数,是32 或者64 ,也方便像mimikatz等工具(需要执行对应位数)
echo %PROCESSOR_ARCHITECTURE%
查看安装的软件的版本、路径等
可以查看下安装了那些软件,有时候可能利用来提权,比如java语言存在提权漏洞的情况。
wmic product get name, version
可以查看当前进程列表和进程用户
这里可以获取到比较全的用户启用的进程列表之类的相关信息,盗取Windows令牌时应该用得到,同时可以分析出是否安装了杀毒软件等内容
tasklist /v
查看进程信息
查看系统运行的哪些进程,是否存在杀毒软件、主机安全软件,可以进行分析分析。
wmic process list brief
查询本机的服务信息
查看系统运行的哪些服务,是否存在数据库之类的,web服务之类的,可以进行分析分析。
wmic service list brief
查看启动程序信息
杀毒软件一般开机自启,可以通过这个比较简单的看到吧
wmic startup get command,caption
查看计划任务
据说可以用来提权之类
schtasks /query /fo LIST /v
查看当前权限
查看当前权限,准备下一步
whoami
whoami /all
net user username /domian
查看补丁列表
看看缺哪些,结合提权网站查询一下,提权使用
systeminfo 查看系统详情
wmic qfe get Caption,Description,HotFixID,InstalledOn 查看补丁的名称、描述、ID、安装时间等
凭证收集
拿下一台机器后,需要尽可能的收集信息。如下是几个常用软件保存密码的注册表地址,可以根据算法去解密保存的账号密码。
远程连接凭据:
cmdkey /list 这是一个CMD命令
navicat:
MySQL HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\
MariaDB HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\
MongoDB HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers\
Microsoft SQL HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\
Oracle HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\
PostgreSQL HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\
SQLite HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\
SecureCRT:
xp/win2003
C:\Documents and Settings\USERNAME\Application Data\VanDyke\Config\Sessions
win7/win2008以上
C:\Users\USERNAME\AppData\Roaming\VanDyke\Config\Sessions
Xshell:
Xshell 5
%userprofile%\Documents\NetSarang\Xshell\Sessions
Xshell 6
%userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions
WinSCP:
HKCU\Software\Martin Prikryl\WinSCP 2\Sessions
VNC:
RealVNC
HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver Password
TightVNC
HKEY_CURRENT_USER\Software\TightVNC\Server Value Password or PasswordViewOnly
TigerVNC
HKEY_LOCAL_USER\Software\TigerVNC\WinVNC4 Password
UltraVNC
C:\Program Files\UltraVNC\ultravnc.ini passwd or passwd2
Wifi密码获取
有多个的话可以获取多个密码
netsh wlan show profiles
netsh wlan show profile name="wifi名称" key=clear
配置文件
配置文件中又时会包含密码,如WEb应用的
一个正常的Web应用肯定有对应的数据库账号密码信息,是一个不错的宝藏。
可以使用如下命令寻找包含密码字段的文件:
cd /web findstr /s /m “password” *.*
下面是常用应用的默认配置路径:
Tomcat: CATALINA_HOME/conf/tomcat-users.xml
Apache: /etc/httpd/conf/httpd.conf
Nginx: /etc/nginx/nginx.conf
Wdcp: /www/wdlinux/wdcp/conf/mrpw.conf
Mysql: mysql\data\mysql\user.MYD
网络信息以及域内收集
基础网络信息收集
查看基本网络配置
ipconfig /all
查看开放端口以及与其他IP地址连接
netstat -ano
查看共享资料
net view
查看本机防火墙配置
netsh firewall set opmode disable 关闭防火墙(Windows Server 2003 以前的版本)
netsh advfirewall set allprofiles state off 关闭防火墙(Windows Server 2003 以后的版本)
netsh firewall show config 查看防火墙配置
这个添加/ ?接续使用哦
查询路由表以及所有可用接口的ARP缓存表
route print
arp -a
查看共享资料
net view
查看hosts文件
linux: cat /etc/hosts
windows: type c:\Windows\system32\drivers\etc\hosts
查看DNS缓存记录
ipconfig /displaydns
除了DNS缓存记录外,内网很有可能存在DNS域传送漏洞,执行相关命令可以获取域内所有解析信息
windows:
nslookup -type=ns domain.com nslookup sserver dns.domain.com ls domain.com
linux:
dig @dns.domain.com axfr domain.com
利用扫描工具进行扫描发现,比如nmap、nbtscan
![image](3EA10285BC2A4116B071149A70E0C7AD)
查找域内SPN (普通域用户权限即可)
为后续Kerberoasting做准备
setspn -T domain.com -Q */*
或者使用 GetUserSPNs.vbs脚本、Rubeus
会话收集
在网内收集会话,如看管理员登录过哪些机器、机器被谁登录过,这样攻击的目标就会清晰很多。
1、可以使用NetSessionEnum api来查看其他主机上有哪些用户登录。
2、检查远程机器注册表项里HKEY_USERS来查询谁正在登陆机器,比如我们远程登录SERVER12的注册表,看到HKEY_USERS底下的key有S-1-5-21-1909611416-240434215-3714836602-1113,将S-1-5-21-1909611416-240434215-3714836602-1113这个sid转化为用户名是TEST\maria,就可以看到用户TEST\maria当前正在SERVER12这台机器上登录。
(1) 默认PC机器,是没有开启注册表远程连接的。Server 机器,默认开启远程连接。
(2) 域内任何用户,即使配置了,不能本地登录域内机器A,但是只要域内机器A开启远程注册表连接,我们就可以连接上机器A的注册表,从而枚举正在登陆的用户
域内信息收集
定位域控
1、查看DNS服务器,一般DNS服务装在域控制器上
ipconfig /all
2、使用nslookup 来搞一下
test.com 记得替换成需要查询的域
nslookup -type=all _ldap._tcp.dc._msdcs.test.com
3、直接查询域控制器
net group "domain controllers" /domain
4、域控一般还是时间服务器
net time /domain
这两个结合应该也可以的吧
net user /domain
net group “domain admins” /domain
定位域管理员
为了快速那些一个域,窃取于管理员进程凭证也是不错的选择,下面写一下简单步骤。
- 通过net group “domain admins” /domain 列出域管理员组成员
- 通过tasklist /v 列出本地进程的所有者
- 进行交叉处理,找到域管理进程
- 使用msf或者cs的相关模块窃取令牌。
查询域信任
nltest /domain_trusts
参考
https://security.tencent.com/index.php/blog/msg/154
https://daiker.gitbook.io/windows-protocol/ldap-pian/10#0x03-yu-yong-hu-zhang-hu-yu-ji-qi-yong-hu-de-dui-ying-guan-xi
https://www.freebuf.com/articles/246440.html
https://www.cnblogs.com/catt1e/p/12723278.html
https://blog.csdn.net/qq_36119192/article/details/107141281