AD

奇思巧计-虚假进程对抗APT及恶意软件

0x01概述

       本文描述内容仅仅是提出来一个比较简陋,但有效的对抗APT攻击及恶意软件的思路。这个方法不具有全面性,只能对抗部分恶意软件。

0x02说明

在很多恶意软件及APT攻击行动中,为了保持隐蔽性和持久性。很多恶意软件会监测自身是否运行在沙河中,或者是否正在被一些调试软件调试。部分恶意软件如果检测到运行环境为沙河或者正在被调试,则会不执行恶意代码,或者退出自身的运行。
根据以上内容,如果在自身设备上创建几个虚假的进程名称,如 idag.exeollydbg.exe等,则可以达到一定的防护效果。
下面给出了一个powershell代码参考:

# Usage: .\fake_sandbox.ps1 -action {start,stop}
param([Parameter(Mandatory=$true)][string]$action)
$fakeProcesses = @("wireshark.exe", "vmacthlp.exe", "VBoxService.exe",
    "VBoxTray.exe", "procmon.exe", "ollydbg.exe", "vmware-tray.exe",
    "idag.exe", "ImmunityDebugger.exe")
if ($action -ceq "start") {
    # We will store our renamed binaries into a temp folder
    $tmpdir = [System.Guid]::NewGuid().ToString()
    $binloc = Join-path $env:temp $tmpdir
    # Creating temp folder
    New-Item -Type Directory -Path $binloc
    $oldpwd = $pwd
    Set-Location $binloc
    foreach ($proc in $fakeProcesses) {
        # Copy ping.exe and rename binary to fake one
        Copy-Item c:\windows\system32\ping.exe "$binloc\$proc"
        # Start infinite ping process (localhost) - that's kind of ugly
        Start-Process ".\$proc" -WindowStyle Hidden -ArgumentList "-t -4 127.0.0.1"
        write-host "[+] Process $proc spawned"
    }

    Set-Location $oldpwd
}
elseif ($action -ceq "stop") {
    foreach ($proc in $fakeProcesses) {
        Stop-Process -processname "$proc".Split(".")[0]
        write-host "[+] Killed $proc"
    }
}
else {
    write-host "Bad usage: need '-action start' or '-action stop' parameter"
}

0x03扩展

       在上述基础上,可以对这个方法进行扩展。因为某些恶意代码的逻辑不同,可能是在发现调试进程后,会对调试程序进行干扰,甚至会尝试结束调试程序的运行。则可以对这个特性进行利用,在本机对创建的虚假进程进行检测,如果发现虚假调试进程异常退出,则有可能有恶意软件潜伏在设备中。这有不失为一个黑盒检测到思路。

0x04 附录


参考:https://gist.github.com/x0rz/e8b36fee33b87aa7e4e5dfd4c0cfc1a6

评论

此博客中的热门博文

简单粗暴导出小米便签

我——终于一个人了

Ubiquiti_Networks_UniFi_Cloud_Key_authed_rce