E4del 및 PINHOLE, C2를 위한 FTP 배너 데드드롭 악용
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
위협 행위자들은 E4del 및 PINHOLE 악성 코드를 전달하기 위해 FTP 서버 인사말 배너를 데드 드롭 리졸버로 악용하고 있습니다. FTP 프로토콜의 사전 인증 단계를 활용하여, 공격자는 전통적인 파일 전송 없이 피해자 측 해석기에 명령을 직접 전달할 수 있습니다. 이 기술은 많은 파일 기반 보안 제어를 회피할 수 있는 잠행적인 생활형 감염 체인을 가능하게 합니다.
조사
조사는 FTP 출력을 명령 해석기로 파이핑 하는 것, HTTP를 통한 WebDAV를 2차 실행에 사용하는 것, 그리고 BITS 기반 다운로드에 의존하는 세 가지 전달 변종을 조사했습니다. 연구자들은 리디렉터와 페이로드 전달 노드로 활동하는 FTP 호스트 클러스터를 식별했습니다. E4del 및 PINHOLE 분석을 통해 Electron 기반 위장, 셸코드 변동, API 훅킹을 우회하기 위한 직접 시스템 호출과 같은 기술도 확인되었습니다.
완화
수비자들은 파일 해시 대신 행동적 탐지에 중점을 두고, 특히 외부 TCP/21 연결 이후에 즉각적인 명령 해석기 실행을 모니터링해야 합니다. 엄격한 제어는 conhost.exe, bitsadmin.exe, 및 WebDAV 기반 UNC 경로에 대한 노출을 감소시킬 수 있습니다. 보안 팀은 또한에 의해 생성된 의심스러운 자식 프로세스를 모니터링해야 합니다 ApplicationFrameHost.exe.
반응
이 활동이 탐지되면, 추가 명령 실행이나 데이터 탈취를 방지하기 위해 영향을 받은 엔드포인트를 즉시 격리해야 합니다. 반응자들은 특히 ApplicationFrameHost.exe와 같은 합법적인 프로세스 내에서 주입된 코드를 식별하기 위해 메모리 포렌식을 수행해야 합니다. FTP 데드 드롭을 통해 받은 명령을 재구성하고 타협의 범위를 결정하기 위해 PowerShell 스크립트 블록 로그도 검토해야 합니다.
공격 흐름
우리는 이 부분을 여전히 업데이트 중입니다.
탐지
LOLBAS WScript / CScript (프로세스 생성 통해)
가능한 지속성 지점 [ASEPs – Software/NTUSER Hive] (레지스트리 이벤트 통해)
Powershell을 통한 다운로드 또는 업로드 (명령줄 통해)
LOLBAS Conhost (명령줄 통해)
Powershell을 사용하여 의심스러운 디렉토리에 아카이브가 추출됨 (powershell 통해)
탐지할 IOC (SourceIP): FTP 배너 데드 드롭: E4del 및 PINHOLE에 대한 헌터의 현장 가이드
탐지할 IOC (DestinationIP): FTP 배너 데드 드롭: E4del 및 PINHOLE에 대한 헌터의 현장 가이드
Conhost 사용과 함께 한 FTP 및 PowerShell의 의심스러운 사용 [Windows 프로세스 생성]
E4del 및 PINHOLE 원격 액세스 트로이 목마에 대한 FTP 배너 데드 드롭 탐지 [Windows 네트워크 연결]
시뮬레이션 실행
-
공격 내러티브 및 명령: 적은 FTP “데드 드롭”을 통해 명령을 검색하는 것을 목표로 합니다. 파일을 다운로드하는 대신, 적은 제어된 FTP 서버에 연결을 시작합니다. 인터프리터(PowerShell)가 연결되면, 서버의 배너를 읽고 다음 단계 명령의 인코딩을 포함합니다. 이는 “파일 다운로드” 서명을 피하고 프로토콜 핸드셰이크 자체를 트리거 전달에 의존합니다. 우리는 포트 21에서 리스너와의 연결을 시도하기 위해 PowerShell을 사용할 것입니다.
-
회귀 테스트 스크립트:
# 시뮬레이션: 포트 21에서 FTP 서비스에 연결하기 위한 PowerShell 시도 # 이것은 E4del/PINHOLE의 '데드 드롭' 동작을 모방합니다 $TargetIP = "127.0.0.1" # 실제 테스트에서는 제어된 리스너로 지시합니다 $TargetPort = 21 Write-Host "[+] 시뮬레이션 시작: FTP 배너 데드 드롭에 연결 중..." -ForegroundColor Cyan try { # PowerShell을 통해 네트워크 연결 이벤트를 트리거하려고 System.Net.Sockets 사용 $client = New-Object System.Net.Sockets.TcpClient $client.Connect($TargetIP, $TargetPort) Write-Host "[!] 성공: 연결이 수립되었습니다. 텔레메트리가 생성되어야 합니다." -ForegroundColor Green $client.Close() } catch { Write-Host "[-] 연결 실패 (리스너가 활성화되지 않은 경우 예상됨), 그러나 텔레메트리가 여전히 존재해야 합니다." -ForegroundColor Yellow } -
클린업 명령:
# 클린업: 잔여 연결이나 프로세스가 남지 않도록 보장 Stop-Process -Name "powershell" -ErrorAction SilentlyContinue Write-Host "[+] 클린업 완료." -ForegroundColor Green