
체크인과 악성코드 배포, 도메인 하나가 다 떠안았다
CTX Team이 추적한 swift-be.com은 C2 체크인 스크립트와 실행 파일 배포를 같은 경로에서 동시에 처리하는 단일 노드형 인프라로 확인됐다. 분산형 다중 도메인 구조 대신 자가관리 스테이징 서버 하나로 캠페인 전체를 굴리는 소규모 운영의 흔적이 짙게 남아 있다.
도메인 하나가 체크인과 페이로드를 동시에 떠안다
공격자가 명령제어(C2) 서버와 실제 악성코드 배포 지점을 물리적으로 분리하는 것은 오랫동안 업계 표준으로 통했다. 그런데 이번에 CTX Team이 추적한 사례는 이 통상적인 구조를 따르지 않는다. 도메인 swift-be.com 하나가 체크인 스크립트와 실행 파일 배포를 동시에 처리하고 있으며, 그 둘은 같은 URL 경로 /roks4/ 아래에 나란히 놓여 있다 — swift-be.com/roks4/gate.php가 PHP 기반 체크인 엔드포인트로, swift-be.com/roks4/shit.exe가 실행 파일 페이로드 배포처로 확인된다. 별도의 스테이징 서버, CDN, 다중 도메인 로테이션 없이 단일 노드가 인프라 전체를 감당하는 구조다.
이런 압축형 배치는 규모의 문제가 아니라 운영 철학의 문제다. 분산형 인프라는 하나의 노드가 차단되더라도 캠페인이 지속되도록 설계된 것이지만, 이번 사례처럼 체크인과 페이로드가 한 도메인·한 경로에 몰려 있으면 그 도메인이 내려가는 순간 캠페인 전체가 함께 멈춘다. CTX Team의 코호트 분석에서도 이 패턴은 "분산된 다중 도메인 인프라가 아니라 단일한 자가관리 스테이징 서버"로 해석됐다 — 규모보다는 운영 편의성을 택한 소규모 운영팀의 흔적으로 읽힌다는 뜻이다. 이 관측이 이번 기사의 척추다. 행위자가 누구인지보다, 이 캠페인이 어떤 방식으로 인프라를 굴리고 있는지가 훨씬 더 확실하게 손에 잡히는 신호이기 때문이다.
Dynadot에 등록된 도메인, 인증서만 89일짜리로 갈아탄 이유
swift-be.com의 등록 기록을 보면 이 인프라가 얼마나 오래 존재했는지와, 실제로 얼마나 짧게 '무장'됐는지 사이에 흥미로운 시차가 드러난다. WHOIS 상 도메인 생성일은 2022-06-10이며 등록기관은 Dynadot Inc다. 도메인 자체는 4년 가까이 살아 있었던 셈이다. 하지만 이 도메인에 발급된 TLS 인증서는 그보다 거의 1년 뒤인 2023-05-05에야 등장했고, 유효기간은 단 89일 — 2023-08-03에 만료되는 짧은 수명이었다. 발급 기관은 Let's Encrypt R3, 대상은 와일드카드 *.swift-be.com을 포함한 인증서였다. CTX Team의 인증서 이상 탐지 항목에서도 이 조합은 'short_lived_cert' 이상 신호로 명시적으로 분류돼 있다.
와일드카드 인증서를 발급받으면서도 89일이라는 짧은 창구만 열어둔 선택은 두 가지로 해석할 수 있다. 하나는 Let's Encrypt 인증서 자체가 원래 짧은 유효기간(통상 90일)으로 자동 발급되는 무료 CA라는 점을 감안하면 특별할 것 없는 기본 설정일 수 있다는 것, 다른 하나는 운영팀이 이 도메인을 특정 캠페인 창구 이상의 장기 자산으로 취급하지 않았다는 정황일 수 있다는 것이다. 다만 도메인이 2022년 중반부터 존재했음에도 인증서가 2023년 5월에야 붙은 시차, 그리고 그 인증서가 다시 90일 만에 만료되도록 방치된 정황을 함께 놓고 보면, 이 인프라는 필요한 시점에만 짧게 '점등'되는 방식으로 운용됐을 가능성이 있다 — 이는 관측된 사실을 근거로 한 추론이며, 단정할 수는 없다.
이 도메인의 A레코드는 75.2.18.233 하나뿐이고, NS는 ns1.dyna-ns.net·ns2.dyna-ns.net으로 등록기관 자체 네임서버를 그대로 쓰고 있다. 별도의 호스팅 파트너나 CDN을 거치지 않고 등록기관 인프라에 얹혀 굴러가는 구성이다. CTX Team의 이상치(outlier) 목록에서도 Dynadot Inc라는 등록기관이 전체 카탈로그에서 이 도메인에만 등장한다는 점이 별도로 지적됐다 — 다른 캠페인이나 다른 도메인과 등록기관을 공유하는 흔적이 없다는 뜻이며, 이 인프라가 더 넓은 호스팅 생태계의 일부라기보다 이번 캠페인만의 독립적인 자산으로 준비됐음을 시사한다. 다만 이 해석 역시 코호트 인덱스의 파일·도메인·인증서 교차 연결 테이블이 비어 있는 상태에서 나온 것이라, 더 넓은 인프라 재사용 여부를 판단하기엔 현재 확보된 단서가 제한적이라는 점을 짚어둘 필요가 있다.
VirusTotal 기준으로 이 도메인의 탐지율은 15/91에 머물러 있고, Cisco Umbrella의 대중성 순위에서는 2023-06-09 시점 848,680위로 잡혀 있다 — 상위권 도메인은 전혀 아니지만 완전히 무명도 아닌, 딱 필요한 만큼만 노출된 위치다. 이 낮은 탐지율은 도메인 자체가 아직 광범위한 차단 목록에 오르지 못했다는 뜻이기도 해서, 이 캠페인이 관측 시점 기준으로는 상당히 조용하게 운용되고 있었음을 방증한다.
/roks4/ 경로 아래에서 벌어지는 두 단계 실행
공격 체인을 순서대로 재구성하면, swift-be.com이라는 이름 자체가 첫 단추다. 이름이 SWIFT 은행 간 결제망 용어를 모사하고 있다는 점은 데이터에서 직접 확인되지 않지만, 이런 금융 용어 차용은 결제·전신송금 업무를 다루는 담당자를 겨냥한 소셜 엔지니어링 후킹으로 흔히 쓰이는 기법이다 — 이는 관측된 도메인명에서 끌어낸 분석가의 추론이며, 실제 이메일이나 메시지형 유인 경로가 이번 데이터에서 직접 확인된 것은 아니다. 이 페이로드 배포 지점(T1566)에 도달한 이후의 흐름은 좀 더 구체적으로 잡힌다.
실행 단계에서 눈에 띄는 파일은 936d9411…86e7로 시작하는 DOS 배치 파일이다. 이 파일은 트로얀 aagk/occamy 계열로 분류돼 있으며, 알려진 대체 파일명만 봐도 %TEMP%\970187.bat, %TEMP%\277218.bat, %TEMP%\978234.bat, %TEMP%\914437.bat, %TEMP%\239890.bat 등 실행마다 임의의 숫자로 재생성되는 패턴이 확인된다. 이는 Windows 명령 셸 기반 실행(T1059.003)의 전형적인 모습으로, 배치 스크립트가 %TEMP% 경로에서 이름을 계속 바꿔가며 재실행되는 구조다. 이 파일에는 낮은 심각도의 IDS 룰 두 건도 매치돼 있다 — "(stream_tcp) data sent on stream after TCP reset sent"와 "SURICATA STREAM Packet with invalid timestamp"로, 두 룰 모두 프로토콜 명령 디코드 카테고리에 속하며 비정상적인 TCP 스트림 동작을 가리킨다. 실행 이후 외부 통신이 발생했다는 정황과 부합한다.
두 번째 파일은 b7b4909…dc10d, 파일명 Newsarpy4.exe로 확인되는 644KB 규모의 Win32 PE 실행 파일이다. 이 파일의 빌드 프로비넌스를 보면 PEiD로 패킹돼 있고, 임포트 테이블 항목 수는 0으로 기록돼 있다 — 정적 분석을 정면으로 무력화하려는 구조다(T1027). 서명 여부 필드도 signed=false로 명시돼 있어, 정상적인 코드 서명 체인을 전혀 거치지 않은 바이너리라는 점이 확인된다. 그럼에도 VirusTotal 탐지율은 52/75로 상당히 높다 — ALYac, AhnLab-V3, BitDefender, CrowdStrike, Kaspersky, ESET-NOD32 등 30개 엔진이 악성으로 플래그했고, Dr.Web vxCube 샌드박스도 1/1로 malicious 판정을 내렸다. 패킹과 제로 임포트라는 회피 시도에도 불구하고 시그니처·행위 기반 탐지 양쪽에서 걸러졌다는 뜻이다.
마지막 고리는 다시 swift-be.com/roks4/gate.php로 돌아온다. gate.php라는 명명 방식은 경량 PHP 기반 C2 체크인 스크립트에서 흔히 관찰되는 패턴으로, 이 URL이 페이로드와 같은 와일드카드 인증서 아래 같은 경로에 놓여 있다는 점에서 HTTPS 기반 애플리케이션 계층 C2(T1071.001)로 기능했을 가능성이 높다 — 다만 실제 트래픽 캡처나 프로토콜 페이로드가 확인된 것이 아니라 URL 구조에서 끌어낸 추론이라는 점은 분명히 해둘 필요가 있다. 두 파일 사이에 공유되는 imphash나 서명자가 전혀 없다는 점도 감안하면, 이 두 페이로드가 같은 실행 체인의 서로 다른 단계였는지, 혹은 같은 배포처에 우연히 함께 올라간 개별 도구였는지는 이번 관측만으로는 완전히 단정하기 어렵다.
라벨은 스틸러, 실물은 다운로더 — 툴셋의 간극
이 레코드에는 ponystealer라는 패밀리 라벨이 붙어 있다. 그러나 실제로 확보된 두 파일 어느 쪽에서도 자격증명 탈취에 해당하는 행위가 직접 관측되지는 않는다. 배치 스크립트 파일은 933건이 아니라 무려 505건의 제출 이력과 144개의 서로 다른 제출 소스를 보유한, 2012-12-18부터 2023-05-22까지 무려 10년 넘게 관측된 장기 생존 샘플이다. 이 정도의 제출량과 관측 기간은 이 배치 다운로더가 특정 캠페인을 위해 새로 제작된 도구가 아니라, 여러 유포 체인에서 반복 재활용되는 범용 커머디티 컴포넌트임을 시사한다. 실제로 이 파일의 커뮤니티 투표는 mal/harm = 39/3으로 악성 쪽에 확실히 기울어 있지만, 샌드박스 판정은 오히려 0/3으로 harmless — Zenbox, OS X Sandbox, Zenbox macOS 세 곳 모두 신뢰도 99~100%의 CLEAN 판정을 내렸다. 이는 이 스크립트 단독으로는 별다른 행위를 트리거하지 않고, 그 자체가 후속 실행을 위한 단순 트리거 역할에 머물렀을 가능성을 보여준다.
반대로 Newsarpy4.exe는 제출 이력이 3건, 단일 소스에 그친다. 처음 관측된 시점은 2018-06-12로 배치 파일보다 훨씬 늦고, 관측 창구도 일주일 남짜에 불과하다(2018-06-19까지). 다시 말해 두 파일은 서로 완전히 다른 생애 곡선을 그리고 있다 — 하나는 10년 넘게 여러 유포망을 떠도는 범용 도구, 다른 하나는 짧게 스쳐간 소규모 배포분이다. 이런 불일치, 그리고 두 파일 사이에 imphash·서명자·위협 라벨 어느 것도 공유되지 않는다는 사실은 CTX Team의 이상치 목록에도 그대로 반영돼 있다. 두 파일 모두 카탈로그 내 다른 어떤 샘플과도 명시적으로 묶이지 않는 '고립' 지표로 표시돼 있다.
이 지점에서 솔직하게 인정해야 할 한계가 있다. 실제 ponystealer 라벨이 가리키는 자격증명 탈취 페이로드 본체가 이번에 확보된 두 파일 어디에도 존재하지 않는다는 점이다. 이는 데이터 자체의 결함이 아니라, 이 관측 시점에 수집된 조각이 전체 침투 체인의 일부에 불과했을 가능성을 의미한다. 즉 이번에 확인된 배치 스크립트와 패킹된 EXE는 초기 침투·실행 단계의 조각일 뿐, 최종 정보 탈취 단계의 실물은 별도의 관측 기회에서 잡혔거나 아직 포착되지 않았을 수 있다 — 현 단계 증거로는 이 이상 단정하기 어렵다.
Gorgon Group과 방글라데시 제조업 표적 — 짧게 짚을 배경
이 캠페인은 위협 레코드 상 Gorgon Group(별칭 Subaat)에 귀속돼 있으며, 동기는 espionage로, 표적은 방글라데시의 제조업 부문으로 태깅돼 있다. Gorgon Group은 공개적으로 남아시아 지역을 겨냥한 스피어피싱 기반 침투와 상용 RAT·정보 탈취형 도구를 혼용하는 것으로 알려진 행위자다. 다만 이번에 확보된 툴셋 — 10년 넘게 재활용된 범용 배치 다운로더와 서명 없는 패킹 EXE — 은 정교한 첩보 작전에 걸맞은 정밀 도구라기보다는 저비용 커머디티 접근 브로커의 작업 방식에 더 가깝다. 이 불일치는 굳이 해소하려 하기보다 그대로 짚어두는 편이 타당하다. 레코드가 지정한 표적 프로필과 실제 관측된 도구의 성숙도 사이에는 명백한 간극이 있고, 이 간극이 왜 발생했는지는 이번 데이터만으로는 판단할 근거가 부족하다.
또한 SWIFT를 연상시키는 도메인명이 금융·결제 처리 업무를 담당하는 인력을 노린 유인일 가능성은 있지만, 이는 제조업 표적이라는 태깅과 자연스럽게 어긋난다 — 제조업체 내부에서도 결제·전신송금을 다루는 재무 담당자가 별도로 존재할 수 있다는 점을 고려하면 완전히 모순되는 것은 아니지만, 이 역시 추론의 영역에 머문다. 행위자 귀속에 대한 확신도는 낮게 잡아야 하고, 이 캠페인이 정말 Gorgon Group의 것인지, 아니면 유사한 태깅 기준으로 분류된 별개의 소규모 운영인지는 현재로서는 단정하기 어렵다.
인프라가 말해주는 운영 규모, 그리고 다음에 볼 것
이번 사례를 관통하는 가장 확실한 신호는 인프라의 압축성이다. 체크인 스크립트와 실행 파일이 한 도메인, 한 경로에 함께 걸려 있는 구성, 4년 된 도메인에 뒤늦게 붙었다가 89일 만에 사라진 인증서, 다른 어떤 캠페인 자산과도 등록기관을 공유하지 않는 Dynadot 등록 — 이 모든 조각은 개별적으로는 사소해 보이지만 합쳐 놓으면 하나의 그림을 그린다. 다중 도메인을 굴리고 CDN 뒤에 인프라를 숨기고 인증서를 장기간 재사용하는 성숙한 운영 체계가 아니라, 필요한 시점에 필요한 만큼만 인프라를 세우고 회수하는 소규모·저비용 운영 방식이라는 그림이다.
이 해석이 맞다면, 이런 유형의 인프라를 장기 추적 거점으로 삼는 접근은 효율이 떨어질 수 있다. swift-be.com 같은 도메인은 애초에 오래 살아 있을 것을 전제하지 않고 설계된 소모성 자산에 가깝기 때문에, 이 도메인 하나를 붙잡고 있는 것보다는 같은 운영 패턴 — 하나의 등록기관, 짧은 인증서 수명, 체크인과 페이로드의 동일 경로 배치 — 을 특징으로 하는 유사 사례들을 옆으로 넓혀 찾는 접근이 더 생산적일 수 있다. 다만 이번 코호트 인덱스 자체가 파일·도메인·인증서 차원에서 교차 연결 테이블을 비워둔 상태였다는 점은, 아직 이 패턴이 더 넓은 생태계의 일부인지 이번 한 건의 스냅샷인지 판단할 근거가 충분하지 않다는 뜻이기도 하다.
방글라데시 제조업 부문, 그중에서도 결제·재무 관련 업무를 처리하는 인력이 이런 유형의 저비용·고회전 인프라를 가장 먼저 체감할 가능성이 높다. 정교한 다단계 침투가 아니라 값싼 도메인 하나와 재활용 스크립트 하나로도 초기 발판을 마련할 수 있다는 사실은, 방어 관점에서 인프라의 '규모'가 곧 '위협의 크기'는 아니라는 점을 다시 확인시켜준다. 이번 사례가 보여주는 건 화려한 다단계 캠페인이 아니라, 최소한의 자산으로 최소한의 창구를 열고 조용히 운용하는 방식이 여전히 유효하다는 사실이며, 이는 앞으로도 비슷한 저관리형 인프라를 반복적으로 마주하게 될 가능성을 시사한다.