
Phorpiex, 임포트 테이블 제로화·수치 도메인 인증서로 이중 은폐
2020년 처음 관측된 77KB짜리 Phorpiex 웜 샘플이 2026년 현재까지 C2 활성 상태를 유지하고 있다. 빌드 단계에서 임포트 테이블을 완전히 비워 정적 분석을 무력화하고, 순수 숫자로만 구성된 도메인에 Let's Encrypt 인증서를 붙여 URL 카테고리 필터링을 동시에 우회하는 이중 은폐 전략이 장기 생존의 핵심이다.
수치 도메인 인증서와 제로 임포트 테이블 — Phorpiex가 선택한 이중 은폐전략
2020년 10월 말 처음 관측된 77KB짜리 Win32 실행 파일 하나가 2023년 2월까지 반복 제출되고, 이후에도 C2 서버 피드에서 꾸준히 살아남아 2026년 6월 현재까지 활성 상태를 유지하고 있다. 이 파일(SHA256: e53fd17b…)이 주목받는 이유는 단순한 장수(長壽) 때문이 아니다. 빌드 단계에서 임포트 테이블을 완전히 비워 정적 분석 기반 탐지를 무력화하고, 운영 체계에서는 순수 숫자로만 구성된 도메인에 Let's Encrypt 인증서를 붙여 URL 카테고리 필터링을 우회하는 — 두 가지 서로 다른 결의 은폐 기법을 동시에 조합한다는 점이다. CTX Team이 이 캠페인을 심각도 100, 신뢰도 85로 분류한 배경에는 이 이중 은폐 구조가 자리 잡고 있다.
임포트 테이블이 비어 있다는 것의 의미
정적 분석 도구가 PE 바이너리를 처음 마주쳤을 때 가장 먼저 들여다보는 것 중 하나가 임포트 테이블이다. 어떤 Windows API를 호출하는지를 보면 파일의 의도를 상당 부분 추론할 수 있고, imphash — 임포트 테이블 해시 — 는 같은 빌더에서 나온 변종들을 묶는 핵심 클러스터링 축이다. e53fd17b…는 임포트 테이블을 완전히 비운 채 빌드됐다. PEiD 패커가 탐지됐고, 실제 API 호출은 런타임에 동적으로 해석된다. imphash 값(9668b7091de4529d55cf638b279f602e)은 존재하지만, 이 값이 다른 샘플과 공유되는 클러스터링 축을 형성하지 못하는 이유가 바로 여기에 있다 — 패킹된 스텁의 해시는 실제 악성 기능을 반영하지 않는다.
PE 섹션 엔트로피 분포가 이 구조를 뒷받침한다. .text 섹션 엔트로피는 5.71, .rdata는 5.59로 비교적 평탄하지만, .reloc 섹션이 6.31로 눈에 띄게 높다. 반면 .data 섹션은 2.38로 거의 평탄하다. 이 패턴 — 높은 엔트로피의 재배치 섹션과 거의 비어 있는 데이터 섹션의 조합 — 은 패킹된 스텁이 언패킹 루틴을 .reloc 영역에 숨기는 방식과 일치한다(T1027). 결과적으로 78개 엔진 중 20개가 이 파일을 여전히 탐지하지 못한다. ALYac, Acronis, Avast-Mobile, Baidu, Gridinsoft, Webroot 등이 미탐지 목록에 이름을 올리고 있다.
그럼에도 불구하고 패킹 레이어를 뚫고 패밀리 귀속을 확정하는 두 개의 크라우드소싱 YARA 룰이 존재한다. ditekSHen이 작성한 MALWARE_Win_Phorpiex와 Malpedia/Felix Bilstein의 win_phorpiex_auto가 이 샘플에서 동시에 발화한다. 두 룰 모두 패킹 이후에도 남아 있는 Phorpiex 고유의 코드 패턴을 탐지 대상으로 삼는다는 점에서, 이 샘플이 Phorpiex/Zard 패밀리에 속한다는 결론은 확인된 사실이다. 탐지율 58/78은 이 두 룰이 잡아낸 엔진들이 상당수 포함된 결과이기도 하다.
svchost.exe라는 이름의 무게
패킹으로 정적 분석을 방해하는 것만으로는 충분하지 않다. 실행 환경에서 프로세스 목록에 노출될 때 어떤 이름으로 보이느냐도 생존에 직결된다. e53fd17b…의 대체 경로 목록은 이 점에서 흥미롭다. C:\8631674119019\svchost.exe, C:\3610186882146\svchost.exe — 무작위로 보이는 숫자 디렉터리 아래에 svchost.exe라는 이름으로 자신을 복사한다. Windows 시스템에서 svchost.exe는 수십 개의 인스턴스가 동시에 실행되는 정상 프로세스다. 숫자 디렉터리 경로는 낯설지만, 프로세스 이름 자체는 SOC 분석가의 시선을 쉽게 지나친다(T1036).
DriveMgr.exe라는 의미 있는 이름도 눈길을 끈다. 드라이브 관리자처럼 들리는 이 이름은 특정 환경에서 맥락에 맞는 위장 이름으로 사용되는 것으로 보인다. C:\Windows\6eu2g01ry.exe처럼 완전히 무작위한 이름도 관측됐다 — 이는 환경에 따라 이름 전략을 달리하거나, 자가 복제 과정에서 임의 이름을 생성하는 메커니즘이 존재할 가능성을 시사한다. 다만 이 샘플에 대한 샌드박스 행동 보고서가 확인되지 않았으므로, 정확한 자가 복제 실행 경로는 추론으로 다뤄야 한다.
Phorpiex는 공개 보안 문헌에서 이동식 미디어와 네트워크 공유를 통한 웜 전파로 잘 알려진 패밀리다. 이 샘플은 trojan, worm, downloader로 동시 분류되며, T1091(이동식 미디어를 통한 복제)이 명시돼 있다는 점은 이 전파 패턴과 일치한다. 그러나 USB 전파나 네트워크 공유 접근이 직접 관측되지는 않았으므로, 이 전파 벡터는 패밀리 특성에 기반한 추론으로 남는다.
02151696915.com — 숫자가 도메인이 될 때
C2 인프라의 첫 번째 노드는 45.141.233.6이다. AS201814, MEVSPACE sp. z o.o. 소속으로 불가리아에 지리적으로 태그돼 있다. 이 IP에서 확인된 TLS 인증서가 이 캠페인의 가장 선명한 인프라 지문이다.
인증서 발급자는 Let's Encrypt Authority X3, 시리얼 번호 3dc20284566c9b431e42e2e00f3a5133411, 유효 기간 2019년 12월 9일부터 2020년 3월 8일까지 — 90일짜리 단명 인증서다. 그런데 인증서의 Subject CN이 www.02151696915.com이다. 순수하게 숫자로만 구성된 도메인. 어떤 서비스나 브랜드도 연상시키지 않고, 카테고리 기반 URL 필터링 시스템이 분류할 수 있는 어휘적 단서를 전혀 제공하지 않는다. Let's Encrypt는 자동화된 도메인 검증만으로 인증서를 발급하므로 비용은 사실상 0에 가깝다. 90일 유효 기간은 인프라 교체 주기와 맞물려 추적을 어렵게 만든다(T1071.002).
이 IP의 WHOIS 레코드에는 흥미로운 시간적 불일치가 있다. /24 블록(45.141.233.0/24, netname: razinet, descr: Razinet Dedicated Servers)의 RIPE 레코드 생성일은 2025년 7월 17일, 마지막 수정일은 2025년 12월 23일이다. 그런데 이 IP에서 관측된 TLS 인증서는 2020년 1월 7일에 발급됐다. 블록이 공식 등록되기 5년 전에 인증서가 찍혔다는 뜻이다. 이는 RIPE 레코드 업데이트가 실제 인프라 운용 시점보다 훨씬 늦게 이뤄진 결과일 수 있다 — 다만 이 시간적 불일치가 인프라 재사용이나 레코드 조작을 의미하는지는 현 단계 증거로는 단정하기 어렵다.
탐지율은 14/91. 절반에도 미치지 못하는 엔진만이 이 IP를 악성으로 분류한다. 커뮤니티 투표는 harmless 0, malicious 0으로 중립이다. 이 IP가 C2 노드로 기능한다는 판단은 TLS 인증서의 도메인 패턴과 캠페인 레코드 내 공동 등장에 기반한 것이지, AV 엔진 합의에서 나온 것이 아니다.
CenturyLink 레거시 블록 안의 이질적 노드
두 번째 C2 노드 64.70.78.32는 첫 번째와 구조적으로 전혀 다른 환경에 위치한다. AS3561, CenturyLink Communications, LLC — 미국의 레거시 상업 호스팅 블록이다. WHOIS를 보면 이 IP는 NET-64-70-78-0-1 블록에 Worldsite.WS로 서브할당돼 있다. MEVSPACE 같은 목적 특화 호스팅 제공자와는 성격이 다른, 일반 상업 호스팅 세그먼트다.
탐지율은 0/91이다. 91개 엔진 중 단 하나도 이 IP를 악성으로 분류하지 않는다. 그러나 커뮤니티 평판 점수는 -1이고, malicious 투표가 1건 존재한다. AV 엔진 합의 없이 위협 인텔리전스 피드에서만 플래그가 붙은 상태 — 이는 이 노드가 악성 트래픽의 직접적 흔적을 남기지 않거나, 아직 충분한 관측이 축적되지 않았음을 의미할 수 있다.
CTX Team의 분석에서 이 노드는 캠페인의 다른 C2 IP인 MEVSPACE 블록과 "패턴이 일치하지 않는 이질적 노드"로 분류된다. 두 IP 사이에는 공유 imphash, 인증서 시리얼, A 레코드, 등록 기관 등 어떤 연결 축도 존재하지 않는다. 이 두 노드가 같은 캠페인 레코드에 묶인 것은 공동 등장(co-listing)에 의한 것이지, 인프라 지문의 공유에서 비롯된 것이 아니다. 이 구조적 이질성은 운영자가 의도적으로 서로 다른 성격의 호스팅 환경을 조합해 네트워크 레이어 차단의 효과를 분산시키려 했을 가능성을 시사한다 — 다만 이는 호스팅 대조에서 도출된 추론이지 직접 관측된 사실이 아니다.
tsrv2.top의 세 경로 — 확인되지 않은 페이로드 배포 계층
인디케이터 카탈로그에는 tsrv2.top/1, tsrv2.top/2, tsrv2.top/3 세 개의 URL이 등록돼 있다. 이 순차적 숫자 경로 구조는 Phorpiex가 페이로드 스테이징에 사용하는 번호 매기기 엔드포인트 패턴과 형태적으로 일치한다. MITRE 메타데이터에서 T1071.002(파일 전송 프로토콜 기반 C2)와 T1105(인그레스 툴 전송)가 함께 명시돼 있다는 점도 HTTP 기반 페이로드 가져오기 패턴을 암시한다. 이 URL들이 실제로 활성 페이로드를 서빙하고 있는지, 아니면 이미 비활성화된 엔드포인트인지는 현 단계 증거로는 판단할 수 없다. 이 세 번째 인프라 계층은 확인이 필요한 미결 신호로 남는다.
캠페인 전체 인프라를 조망하면 세 계층이 보인다. 수치 도메인 TLS 인증서를 가진 MEVSPACE 노드(45.141.233.6)가 주요 C2 채널을 담당하고, CenturyLink 레거시 블록의 Worldsite.WS 서브할당 노드(64.70.78.32)가 보조 또는 폴백 역할을 하며, tsrv2.top의 번호 매기기 경로들이 페이로드 배포 계층을 구성하는 구조다. 세 계층 사이에 공유 인프라 지문이 없다는 점이 이 캠페인 인프라 분석의 근본적 한계이자, 동시에 운영자의 의도적 분리 전략의 흔적일 수 있다.
공격 전개 — 웜에서 C2까지의 경로
공격 사슬의 초기 접근 단계는 추론에 기반한다. 샘플이 trojan과 worm으로 동시 분류되고, C:\8631674119019\svchost.exe, C:\3610186882146\svchost.exe 같은 숫자 디렉터리 경로들이 자가 복제 과정에서 생성된 것으로 보인다는 점에서, 이동식 미디어나 네트워크 공유를 통한 웜 방식 전파(T1091)가 초기 접근 경로로 추정된다. 그러나 이를 직접 확인할 샌드박스 행동 보고서는 확인되지 않았다.
실행 이후 방어 회피 단계는 직접 확인된다. 77KB PE 파일은 PEiD 패커로 압축돼 있고, 임포트 테이블은 비어 있으며, svchost.exe 또는 DriveMgr.exe로 위장해 Windows 프로세스 목록에 녹아든다(T1036). 패킹된 스텁은 런타임에 API를 동적으로 해석해 정적 imphash 기반 탐지를 무력화한다(T1027). 이 두 기법의 조합이 20개 AV 엔진을 여전히 맹점으로 남겨두는 직접적 원인이다.
지속성 확보 단계(T1547.001, T1547.009)는 캠페인 MITRE 메타데이터에 명시돼 있지만, 어떤 레지스트리 런 키가 실제로 작성되는지는 샌드박스 보고서 없이 확인할 수 없다. T1070(지표 제거), T1562.001(보안 도구 비활성화), T1562.004(시스템 방화벽 수정)도 포함돼 있어 설치 후 포렌식 흔적 억제와 보안 도구 무력화를 시도할 가능성이 있지만, 이 역시 직접 관측되지 않은 행동이다 — 단정적 결론은 현 단계에서 어렵다.
C2 통신 단계는 직접 확인된 인프라에 기반한다. 45.141.233.6으로의 TLS 연결은 수치 도메인 02151696915.com에 발급된 Let's Encrypt 인증서(시리얼 3dc20284566c9b431e42e2e00f3a5133411)를 통해 이뤄진다. 이 채널이 카테고리 기반 필터링을 우회하는 방식은 앞서 설명한 대로다. 64.70.78.32는 보조 C2 또는 폴백 노드로 기능하는 것으로 추정되며, tsrv2.top의 번호 매기기 경로들은 HTTP 기반 페이로드 가져오기 엔드포인트로 추정된다.
이 캠페인이 시사하는 것
e53fd17b…가 처음 VirusTotal에 제출된 것은 2020년 10월 27일이다. 마지막 제출은 2023년 2월 12일. 그리고 이 캠페인 레코드는 2026년 6월 현재까지 C2 서버 피드에서 활성 상태다. 이 장기 지속성은 두 가지 가능성 중 하나를 시사한다 — 감염된 호스트에서의 장기 잔류이거나, 운영자가 수년 된 도구를 여전히 재사용하고 있거나. 어느 쪽이든, 이 캠페인은 Phorpiex 생태계의 핵심 운영 패턴을 보여준다: 저비용으로 신속하게 프로비저닝 가능한 인프라(수치 도메인 Let's Encrypt 인증서, MEVSPACE 호스팅)와 정적 분석 기반 탐지를 구조적으로 방해하는 빌드 선택의 조합.
임포트 테이블을 완전히 비우는 빌드 전략은 단순한 난독화를 넘어선다. imphash 기반 클러스터링 자체를 무의미하게 만든다는 점에서, 이는 위협 인텔리전스 피드의 작동 방식을 이해하고 그 약점을 겨냥한 설계다. 동시에 수치 도메인 TLS 인증서는 도메인 평판 시스템의 카테고리 분류 로직을 겨냥한다. 두 기법이 서로 다른 방어 레이어를 각각 무력화하도록 설계돼 있다는 점에서, 이 조합은 단일 기법보다 훨씬 높은 회피 효과를 낸다.
캠페인의 지리적 태그는 과테말라(GT)로 명시돼 있으나, 특정 산업 수직 계열은 지정되지 않았다. Phorpiex의 웜 전파 벡터(T1091)는 이동식 미디어 노출이 있는 모든 Windows 환경을 잠재적 진입점으로 만든다 — 섹터 특화 표적화 신호가 없다는 것은 역설적으로 공격 표면이 더 넓다는 의미이기도 하다.
두 C2 노드의 구조적 이질성 — 목적 특화 호스팅 제공자(MEVSPACE/불가리아)와 레거시 상업 호스팅 서브할당(CenturyLink/Worldsite.WS/미국)의 조합 — 은 네트워크 레이어 차단의 효과를 분산시키려는 의도적 인프라 다각화 전략일 가능성이 있다. 한 노드가 차단되더라도 다른 노드가 다른 AS, 다른 지역, 다른 호스팅 성격을 가지고 있어 동일한 차단 정책이 적용되지 않는다. 이 추론이 맞다면, 이 캠페인의 인프라 설계는 단순한 저비용 운영을 넘어 탐지 회피를 위한 구조적 고려가 반영된 것이다.
현재 가장 큰 공백은 tsrv2.top 페이로드 계층이다. 이 세 URL이 실제로 어떤 페이로드를 배포하고 있는지, 혹은 이미 비활성화됐는지가 확인된다면 이 캠페인의 최종 영향(impact) 단계에 대한 그림이 완성될 수 있다. 샌드박스 행동 보고서가 없는 상태에서 추론에 의존해야 하는 한계를 인정하면서도, 임포트 테이블 제로화와 수치 도메인 인증서라는 두 가지 확인된 기법의 조합이 Phorpiex 운영자의 방어 회피 성숙도를 보여주는 신호라는 점은 분명하다.