고차원적 사고

SKT 2000만명 이상 개인정보 해킹에 사용된 bpfdoor 악성코드 분석

Frisbeen 2025. 5. 4. 21:44

1. 서론: 보통의 C 코드처럼 보이지만....

이 글에서 다룰 코드는 얼핏 보면 단순한 네트워크 프로그램처럼 보인다. 그러나 그 실체는 고도로 설계된 백도어 악성코드이며, 리눅스 시스템에서 root 권한으로 실행될 경우 완전한 통제를 공격자에게 넘겨주는 치명적인 도구다.

해당 코드는 다음과 같은 기능을 포함한다:

  • 네트워크 인터페이스에 대한 패킷 감청
  • 특정 조건을 만족하는 "매직 패킷" 수신 시 백도어 트리거
  • RC4 기반 암호화 통신
  • 프로세스 이름 위장
  • iptables 조작을 통한 방화벽 우회
  • 흔적 은폐 및 자기 삭제 기능

이는 단순한 C 프로그래밍을 가장한, 체계적이고 고의적인 침투 도구다.


2. 핵심 기능 개요

패킷 감청 raw socket + BPF 필터를 통해 네트워크 인터페이스 상의 모든 IP 패킷 수신
트리거 방식 특정 구조의 매직 패킷 수신 시 셸 실행
암호화 RC4로 명령과 데이터 암호화
셸 제공 공격자에게 bind shell 또는 reverse shell 제공
위장 프로세스 이름, 환경 변수, 실행 경로 등을 시스템 프로세스처럼 위장
포렌식 회피 HISTFILE, MYSQL_HISTFILE 등을 /dev/null로 지정
방화벽 조작 iptables 명령어를 통해 포트 포워딩 및 허용 설정

3. 상세 동작 원리

3.1 패킷 감청

socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))

이 줄을 통해 커널 수준의 모든 IP 패킷을 수신한다. 이후 BPF 필터를 적용해 특정 규칙(포트, 프로토콜, 패턴 등)에 맞는 패킷만 처리한다.

이 방식은 마치 바닷속에서 아무 물고기나 잡지 않고, 원하는 고기만 걸리는 그물을 설치하는 것과 같다.

 

3.2 매직 패킷 구조

struct magic_packet {
    unsigned int flag;
    in_addr_t ip;
    unsigned short port;
    char pass[14];
}

공격자가 이 구조에 맞춘 패킷을 보내면, 암호(pass)를 검증한 뒤 shell을 제공한다.

 

3.3 RC4 암호화

rc4_init(...); rc4(...);

RC4는 대칭 스트림 암호화 방식이다. 모든 명령 및 응답 데이터를 암호화하여, 단순한 네트워크 감청으로는 명령 내용을 확인할 수 없도록 한다.

이는 마치 편지를 보낼 때, 외부인이 내용은 못 보고 봉투만 볼 수 있게 만드는 것과 같다.

 

3.4 셸 오픈 방식

getshell(), shell() 함수
  • getshell: 리버스 셸을 공격자에게 연결함
  • shell: 감염된 시스템에서 특정 포트를 열고 대기함

이 과정에서 iptables 조작을 통해 포트가 외부와 연결되도록 보장한다.

 

3.5 프로세스 위장

prctl(PR_SET_NAME, "/usr/libexec/postfix/master")

실행 중인 프로세스 이름을 실제 시스템 데몬처럼 위장하여 관리자 눈에 띄지 않게 한다.

이는 마치 범인이 경찰 복장을 하고 경찰서 안에 숨어있는 것과 같다.

 

3.6 환경 은폐

HISTFILE=/dev/null
MYSQL_HISTFILE=/dev/null
PATH=... (위장된 경로)

셸 사용 기록이 남지 않게 하고, 이상한 명령도 일반적인 경로처럼 보이게 한다.


4. 이 코드의 진짜 위험성

  • 백도어가 "패킷 기반"으로 트리거되기 때문에 일반 로그에 흔적이 거의 남지 않는다
  • 셸을 열면서도 RC4로 암호화되어 명령 감청이 어렵다
  • 환경설정과 프로세스명이 정상처럼 위장되어 쉽게 발견되지 않는다
  • 루트 권한으로 실행될 경우, 시스템 완전 장악이 가능하다

이 모든 특성은 이 백도어가 단순한 해킹툴이 아닌, 공격자의 장기적인 은닉과 통제를 위한 고급 악성코드임을 의미한다


5. 대응방법은 없었을까?

5.1 의심되는 증상

  • ps aux에서 /usr/libexec/postfix/master가 비정상적으로 존재
  • netstat이나 lsof에서 42000번대 포트가 열려 있음
  • /var/run/haldrund.pid 파일 존재

5.2 조치 사항

  • 시스템 격리 후 의심 프로세스 종료
  • iptables 정책 초기화
  • /tmp, /dev/shm, /var/run 경로 내 숨겨진 실행 파일 탐색
  • 전체 파일 무결성 검사 (AIDE 등)
  • 크론탭, systemd, rc.local 등 자동 실행 경로 점검

6. 절대 실행하지 말자 ..

BdfDoor 검색해보면 깃허브 오픈소스 레포지토리가 있다.

이 백도어는 단순한 코드 실습이나 해킹 예제가 아니다. 치밀하게 설계된, 은폐성과 지속성이 극대화된 실전용 악성코드다.

 

 

" 개인적으로 이 오픈소스 한국 3대 통신사의 DB가 털렸다는게 참 경탄스럽다 ㅋㅋ.. "

시스템의 정상성은 내부에서부터 무너질 수 있으며, 공격자는 늘 정상처럼 위장된 비정상을 선택한다.