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가 털렸다는게 참 경탄스럽다 ㅋㅋ.. "
시스템의 정상성은 내부에서부터 무너질 수 있으며, 공격자는 늘 정상처럼 위장된 비정상을 선택한다.
'고차원적 사고' 카테고리의 다른 글
SK텔레콤 BPF도어 해킹 사고 정리 (1) | 2025.05.05 |
---|---|
난해한 영화의 기준과 매력 그리고 영화를 즐기는 적절한 접근법 (4) | 2024.09.09 |