[하루한줄] ICMP 터널링을 사용한 백도어 Pingback

URL

Pingback: Backdoor At The End Of The ICMP Tunnel

Target

  • Windows

Explain

ICMP 터널링을 사용하여 통신 탐지를 우회한 뒤 감염된 PC에서 지속적으로 임의 명령을 수행하는 백도어가 발견되었습니다.

해당 악성코드는 데이터베이스, 메시지 큐 및 파일 시스템과 같은 여러 리소스 관리자에 걸쳐있는 트랜잭션을 조정하는 msdtc(Microsoft Distributed Transaction Coordinator)를 통해 악성 DLL oci.dll을 호출하여 지속성을 유지합니다. 또한 msdtc를 시작 프로그램으로 설정하기 위해 SYSTEM 권한을 필요로 하며 멀웨어를 설치할 때 SC Command를 사용하여 윈도우 시스템 디렉터리에 oci.dll를 설치하고 msdtc를 시작 프로그램으로 등록합니다.

oci.dll은 통신에 ICMP(Internet Control Message Protocol)을 사용합니다. ICMP는 네트워크 계층 프로토콜로 ICMP 패킷과 연계되는 TCP, UDP 포트 번호가 존재하지 않아 netstat에서 통신을 숨길 수 있습니다.

ICMP 프로토콜을 통해 통신을 하기 위해 ICMP 터널링을 사용합니다. IPv4 네트워크에서 ICMP 패킷은 IPv4 헤더, ICMP 헤더, ICMP 데이터로 구성되어 있습니다. Type 8 (Echo, ping) ICMP 메시지를 전송하여 명령을 수행하며 패킷 데이터 형식은 다음과 같습니다.

struct ICMPData {
	char cmd[10];    // bot command
	char args[512];  // extra parameter
	char cmd_line[258];  // command line
	unsigned long dest_port; // destination port
	char dest_addr[4];  // destination IP address
}

Pingback에서 지원하는 명령어는 다음과 같습니다.

  • shell - 쉘 실행
  • download - 3개의 모드가 존재
    • Mode 1: 해커의 호스트에 감염된 PC를 다시 연결
    • Mode 2: 감염된 PC가 지정된 포트에 소켓을 열고 해커의 연결을 기다림
    • Mode 3: ICMP 기반으로 매우 느리고 현재 구현 상 flow control을 신뢰할 수 없음
  • upload - 다운로드 명령과 비슷하게 3개의 모드를 지원함
  • exec - 감염된 PC에서 명령어를 실행함