[BPFDoor] feat. SKT 해킹
- sungw98
- 6월 18일
- 4분 분량
2025년 상반기 국내 최대 보안 사고로 기록된 SK Telecom(SKT)의 해킹 사건이 악성코드 BPFDoor 때문인 것으로 밝혀졌다.
이번 해킹으로 인해 피해를 입은 서버는 총 23대로, 특히 가입자의 유심(USIM) 정보를 저장하는 핵심 시스템인 홈 가입자 서버(HSS, Home Subscriber Server)가 포함돼 있다.
BPF(Berkely Packet Filter)
BPF(Berkely Packet Filter)는 리눅스 커널 레벨에서 네트워크 패킷을 효율적으로 필터링하여 사용자 영역으로 전달하는 인터페이스다. 네트워크 보안과 성능 향상을 위한 도구로 많이 사용되며, 최근 악성코드가 이를 악용해 주목받고 있다.
BPFDoor
BPFDoor는 BPF의 기능을 악용한 악성코드로, 커널 수준에서 특정 공격자의 패킷만 선별적으로 수신하도록 설정하여 로컬 방화벽을 우회하는 데 사용된다.
동작 방식
단계 | 설명 |
---|---|
Raw Socket 생성 | 커널 내부에서 네트워크 인터페이스 수준의 패킷 직접 수신 |
BPF 필터 등록 | 커널에 BPF 조건(예: magic packet 조건)을 등록 |
Magic Packet 수신 | 특정 식별자(magic header/salt/hash)가 있는 패킷을 raw socket 통신으로 수신 |
패킷 프로토콜 구분 | IP header의 protocol 필드를 보고 TCP/UDP/ICMP 분기 |
MD5 + salt 비교 | 공격자의 유효 패킷인지 해시로 추가 검증 |
백도어 실행 | 리버스쉘, 바인드쉘, 모니터링 등 기능 실행 |
Raw Socket
Raw Socket은 네트워크 인터페이스 카드(NIC)에서 직접 네트워크 패킷을 수신할 수 있게 하는 소켓 방식이다. 일반적인 TCP/IP 스택을 거치지 않고 직접 NIC 수준에서 패킷을 처리하므로 운영체제의 방화벽 규칙에 영향을 받지 않는다.
Why Raw Socket?
일반적인 네트워크 애플리케이션은 SOCK_STREAM 또는 SOCK_DGRAM 소켓을 사용할 때, 운영체제의 방화벽(iptables, ufw, selinux) 규칙을 따라야 한다. 하지만 Raw Socket은 커널 레벨에서 생성되며, 방화벽 규칙에 구애받지 않고 모든 NIC 트래픽을 직접 감시할 수 있어, 공격자의 입장에서는 매우 효과적인 침투 수단이 된다.
Magic Packet
Magic Packet은 특정한 형식의 패킷으로, 공격자만이 식별할 수 있는 구조를 가진다. 이는 일반적인 로그나 방화벽 필터링에서 탐지되지 않아 은밀한 침투에 이상적인 수단이다.
일반적인 SYN ACK 패킷은 정상적인 TCP 연결 과정에서 사용되며 방화벽과 시스템 로그에 남아 탐지된다. 반면, Magic Packet은 특수한 구조와 Raw Socket을 활용하여 커널 레벨에서 처리되기 때문에 일반적인 방화벽 및 시스템 로그에서 탐지되지 않는다.
이 차이는 Raw Socket의 특성과 BPF의 선택적 필터링 기능 덕분이다. Magic Packet은 커널 수준에서 직접 패킷을 수신하므로 TCP/IP 스택이나 방화벽 규칙을 우회할 수 있어 탐지되지 않는 것이다.
Magic Packet의 구성
Magic Packet Payload 구조:
[marker] + [공격자 IP] + [MD5(salt + 공격자IP)]
marker는 구분자로 기능하며, IP 문자열과 salt를 결합한 후 MD5로 해싱하여 유효성을 검증하는 데 사용된다.
피해자 서버의 동작 과정
int sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
이 소켓은 Ethernet 프레임 전체를 수신
커널의 TCP/IP 스택을 거치지 않고 직접 패킷 수신 가능
악성코드로 악용된 BPF 필터 설정
void apply_bpf_filter(int sd) {
struct sock_filter filter[] = {
...
//IPv6 UDP dest port 위치
{ 0x28, 0, 0, 0x00000038 },
//dest port == 53 → ACCEPT
{ 0x15, 8, 9, 0x00000035 },
//IP 프로토콜 위치 (IPv4: 23번), UDP = 17
{ 0x30, 0, 0, 0x00000017 },
//ACCEPT (return 262144 bytes)
{ 0x6, 0, 0, 0x00040000 },
//DROP
{ 0x6, 0, 0, 0x00000000 }, // ret #0
};
BPF 필터는 "Magic Packet "을 판별
특정 포트(53 Port), 특정 바이트(9999), IP 프로토콜 등 포함
Magic Packet 판별 조건이 참(True)일 경우 리버스쉘 실행
공격 Payload 생성(Magic Packet)
payload = "9999" + 공격자IP + MD5(salt + 공격자IP);
unsigned char *magic = MD5(payload); // 유효성 인증값 생성
9999: Magic Packet 식별값(marker)
공격자IP 및 인증 해시 포함
packet payload를 salt와 조합해 인증 역할 수행
공격자만 리버스쉘에 접근하게 MD5 + salt 값을 설정
BPFDoor 공격 흐름도

대응 방안
BPF Filter 및 Raw Socket 점검
sudo ss -0bp | grep -E "smartd|hald-addon|dbus-daemon|hpas"
Magic Packet 필터 여부 확인
sudo ss -0pb | grep -E "0xnumbers"
리스닝 포트 비정상 여부 점검
nestat -lncp
악성코드 및 해시값
악성코드 | SHA1 | SHA256 | MD5 |
---|---|---|---|
smartadm | 466527d15744cdbb6e1d71129e1798acbe95764d | 3f6f108db37d18519f47c5e4182e5e33cc795564f286ae770aa03372133d15c4 | 227fa46cf2a4517aa1870a011c79eb54 |
hald-addon-volume | e3399ea3ebbbd47c588ae807c4bd429f6eef8deb | 95fd8a70c4b18a9a669fec6eb82dac0ba6a9236ac42a5ecde270330b66f51595 | f4ae0f1204e25a17b2adbbab838097bd |
dbus-srv-bin | 2ca9a29b139b7b2993cabf025b34ead957dee08b | aa779e83ff5271d3f2d270eaed16751a109eb722fca61465d86317e03bbf49e4 | 714165b06a462c9ed3d145bc56054566 |
hpasmmld | e6ccf59c2b7f6bd0f143cde356f60d2217120ad2 | c7f693f7f85b01a8c0e561bd369845f40bff423b0743c7aa0f4c323d9133b5d4 | a47d96ffe446a431a46a3ea3d1ab4d6e |
위장용 프로세스 이름 후보 목록
"/sbin/udevd -d"
"/sbin/mingetty /dev/tty7"
"/usr/sbin/console-kit-daemon --no-daemon"
"hald-addon-acpi: listening on acpi kernel interface /proc/acpi/event"
"dbus-daemon --system"
"hald-runner"
"pickup -l -t fifo -u"
"avahi-daemon: chroot helper"
"/sbin/auditd -n"
"/usr/lib/systemd/systemd-journald"
악성코드가 위 이름으로 위장하여 실행될 수 있기 때문에 필수적으로 점검 해야 한다.
마지막으로
이번 SK Telecom 침해 사고는 고도화된 APT(Advanced Persistent Threat) 공격이 활용된 대표적인 사례로 기업 차원에서 사이버 보안 인식을 전면적으로 재고해야 함을 명확히 보여준다.
SK Telecom 같은 대기업뿐만 아니라 중소, 중견기업, 스타트업과 같이 보안에 많은 투자를 할 수 없는 기업들도 이제는 보안 대책 마련이 필수적이다. 기업들은 보안 전문 인력을 채용하여 리스크 관리를 지속적으로 수행함으로써 사업의 영속성을 확보하는 전략을 도입할 필요가 있다.
또한 생성형 AI로 인하여 공격 환경과 접근성이 쉬워지고 있다. 이에 대한 기술적 대응 방안으로는 정기적으로 BPFDoor 탐지를 위해 시스템 내 BPF 필터 사용 여부, Raw 소켓 프로세스 점검, 환경 변수 점검을 실시해야 한다.
무엇보다 기업의 보안 수준을 높이기 위해서는 단순히 예산 투입의 문제가 아니라, 근본적으로 기업 문화를 변화시켜야 한다. CISO에게 의사 결정 권한과 독립성을 부여하고, 보안 실무자들이 조직 내에서 적극적으로 보안 수준을 높일 수 있는 환경과 여건을 조성해야 한다. 경영진이 보안 문제를 단순한 기술적 이슈가 아니라 기업 전략의 필수 요소로 인식할 때, 조직 전체의 사이버 보안 역량이 향상될 수 있다.
아울러 정량적 리스크 관리(Quantitative Risk Management) 방법론을 도입해 보다 체계적이고 효율적으로 사이버 리스크를 평가하고 관리해야 한다. 이를 통해 보안에 대한 투자의 우선순위를 명확히 하고, 사이버 위협에 대한 기업의 의사결정에 정당성을 부여할 수 있다. 이러한 접근법은 궁극적으로 사이버 공격으로 인한 잠재적 손실을 최소화하고 조직의 지속가능성을 높이는 데 기여할 것이다.
Reference
Comentários