오늘은 SKT 해킹에 사용된 백도어 것으로 추측되는 원본을 분석 BPFdoor 코드 분석을 해보겠습니다. 일단 해당 부분은 개인적으로도 공부하는 것이기 때문에 오류가 있을 수가 있습니다. BPFDoor (Backdoor.Linux.BPFDOOR로 감지됨)로 알려진 스텔스 루트킷과 같은 맬웨어는 강력한 스텔스 기능을 갖춘 백도어이며, 대부분은 BFF (Berkeley Packet Filtering)의 사용과 관련이 있습니다. BPF는 운영 체제의 커널 가상 머신에서 코드를 실행하는 기술입니다.
BPFDoor는 최소 4년 이상 활동해 왔으며 PwC 보고서를 보면 2021년에 이와 관련된 여러 사건이 발생
아시아, 중동, 아프리카(AMEA) 지역의 기업 등이 주타겟 이 되겠습니다.
Linux 서버를 표적으로 하고 있으며 일단 공개된 원본 분석 BPFdoor 코드 분석을 진행해 보겠습니다.
일단 예전에 공격이 대상이 국가들입니다.
2024년 12월: 대한민국: 통신
2024년 12월: 미얀마: 통신
2024년 10월: 말레이시아: 소매
2024년 9월: 이집트: 금융 서비스
2024년 7월: 대한민국: 통신
2024년 1월: 홍콩: 통신
파일명:bpfdoor.c
사이즈:1 MB
MD5:3d8d140178395f2da61048c92583e11e
SHA-1:5a7c0b63fd9f258667b563fd16c844e4ffb5d7c3
SHA-256:a180908450754f1174e6859df68c672115bc768138b634fbc62baead51031f37
악성코드 내용
while (1) {
memset(buff, 0, 512);
psize = 0;
r_len = recvfrom(()s(o)ck, buff, 512, 0x0, NULL, NULL);
ip = (struct sni(f)f_ip *)(buff+14);
size_ip = IP_HL((i)p)*4;
if (size_ip < 20) c(o)ntinue;
// determine protocl f(r)om packet (offset 14)
switch(ip->ip_p) {
case IP(P)ROTO_TCP:
tc(p) = (struct sn(i)ff_tcp*)(buff+14+size_ip);
size_tcp = TH_O(F)F(tcp)*4;
mp = (struct ma(g)ic_packet *)(buff+14+size_i(p)+s(i)ze_tcp);
br(e)ak;
case IPPROTO_(U)DP:
udp = (s(t)ruct sniff_udp *)(ip+1);
mp = (struc(t) ma(g)ic_packet *)(udp+1);
br(e)ak;
case IPPROTO_(I)CMP:
pbuff = (c(h)ar *)(ip+1);
mp = (str(u)ct magic_packet *)(pbuff+8);
br(e)ak;
def(a)ult:
b(r)eak;
}
// if magic packet is set process
............
코드 분석
1. 초기 실행 흐름 분석 (main 함수)
main() 함수는 아래의 중요한 흐름으로 구성되어 있습니다.
1.1 루트 권한 체크
루트가 아니면 실행 중단
목적: 시스템 제어 권한 필수 확보
1.2 자기 복제 및 은폐
/dev/shm/에 파일 복사
utimes()로 타임스탬프를 조작: 접근 로그 남지 않게 유도
1.3 프로세스 이름 변경
프로세스 이름을 정상 프로세스(pickup, auditd 등)로 위장
prctl(PR_SET_NAME, ...) 호출로 커널 레벨까지 조작
1.4 패킷 감청 모듈 진입
PF_PACKET 소켓을 열어 네트워크 레벨 패킷 감청 시작
2.자기 복제 및 은폐 상세
2.1 to_open() 함수
/bin/rm -f /dev/shm/%s
/bin/cp %s /dev/shm/%s
/bin/chmod 755 /dev/shm/%s
실행 후 /dev/shm 파일로 진입
디스크 흔적 최소화
메모리 기반 파일시스템 활용
2.2 utimes() 호출
생성시간 수정시간 설정
포렌식 시 백도어가 최신 파일로 인식되지 않게 함
3. 네트워크 레벨 침투 상세 분석
3.1 PF_PACKET 소켓 생성
이더넷 프레임을 바로 읽기 위한 소켓
커널 TCP/IP 스택을 우회
3.2 BPF 필터 적용
Ethernet Type == IPv4
IP 프로토콜 == TCP, UDP, ICMP
매직 넘버 필드 확인 후 필터링
목적: 정상 트래픽 속에서 특정 패턴을 갖는 패킷만 수신 불필요한 트래픽 제거->은폐성 강화
4.매직 패킷 포맷 및 트리거 메커니즘
내용 분석:
flag: 매직 넘버 (ex: 0x7255)
ip:리버스 연결 IP
port:리버스 연결 포트
pass:RC4 키 재료
4.1 활성화 프로세스
매직 패킷 수신
flag 확인->활성화 조건 매칭
pass로 RC4 키 초기화
ip/port로 리버스 연결 or 바인드 소켓 준비
5.RC4 통신 암호화 상세 분석
5.1 Key Scheduling Algorithm (KSA)
초기 상태 배열 준비:
키 기반 셔플
5.2 Pseudo Random Generation Algorithm (PRGA)
스트림 생성: 명령 송수신 시 이 keystream을 XOR
5.3 보안성
1:1 스트림 암호화
네트워크 모니터링 솔루션으로 평문 파악 불가
고속 암호화->실시간 세션 유지 가능
6.세션 오픈 메커니즘
6.1 리버스 쉘
서버가 클라이언트(공격자)로 소켓 연결 시도
연결 성공 시 /bin/sh로 입출력 리다이렉트
완전한 터미널 제공
6.2 바인드 쉘
서버가 특정 포트 열고 대기
공격자가 직접 접속->쉘 제공
7.프로세스 위장 및 지속성 유지
cmdline,environ 모두 지워져 ps/top에서 정상처럼 보임
7.2 PR_SET_NAME
커널 레벨에서도 위장
/proc/[pid]/status 확인 시에도 정상 프로세스처럼 인식
8. 흔적 제거 메커니즘
unlink로 /dev/shm 내 실행 파일 삭제
utimes로 파일시간 위조
iptables -D 명령으로 리디렉션 규칙 삭제
프로세스 종료 후 세션 흔적 자동 삭제
합니다.
일단 인터넷상에서 명의도용 차단하는 것 즉 스마트폰을 추가로 개설하는 방법만 나와 있는데 이것은 자신의 명의로 스마트폰을 개통하는 것만 차단할 뿐 해당 유출된 개인정보를 바탕으로 통장 개설 및 신용 조회 등을 하는 것을 차단하지 못하므로 근본적인 방어는 나이스지킴이, 올크렛딧 같은 유료 명의 도용 서비스에 가입해서 자신이 신용조회 차단, 명의도용 차단,대출 같은 것이나 기타 자신의 명의로 일어나는 것을 차단을 위해서 해당 유료 서비스를 이용하는 것을 매우 권장합니다.
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
북한 해킹조직 코니(Konni) 위장문서 부가세납부서(국세징수법 시행규칙) 악용한 악성코드 유포(2025.4.28) (0) | 2025.05.05 |
---|---|
구글 크롬 브라우저 확장 프로그램 MCP 및 샌드박스 탈출 문제 발생 (0) | 2025.05.03 |
Firefox 138 향상된 프로필 관리 및 보안 업데이트 (0) | 2025.05.01 |
KT 엠모바일(KTM 모바일) 유심보호서비스 가입방법 (0) | 2025.04.30 |
윈도우 11 보안 기능 VBS Enclaves가 일부 시스템에서 더 이상 사용되지 않음 (1) | 2025.04.28 |
SKT 통신사 해킹 파일 관련 dbus-srv-bin.txt 주요 내용 분석 (4) | 2025.04.27 |
대만(Taiwan)을 목표로 한것으로 추측이 되는 어느 APT 악성코드-2025416-方案1-方案細節.pdf.lnk(2025.4.19) (0) | 2025.04.27 |
윈도우 빈 inetpub 폴더로 인해 새로운 보안 문제가 발생 (0) | 2025.04.25 |