
북한과 연계된 것으로 추정되는 해킹 그룹이 한국의 자동차·미디어 기업 두 곳에서 HAProxy(웹 트래픽을 여러 서버로 분산해 주는 소프트웨어)의 실행 파일 자체를 악성 버전으로 교체했습니다. 'ted'라는 이름의 이 악성 도구는 특정 방문자에게만 변조된 웹 페이지를 보여주고, 공격자와의 원격 명령 통신을 일반 HTTP 트래픽처럼 위장해 로그에 흔적도 남기지 않았습니다. 악성코드는 SSH 비밀번호를 훔치고 크론 데몬(자동 작업 예약 프로그램)·로그인 관리 프로세스 등 핵심 시스템 파일도 추가로 변조했으며, 관련 로그 기록을 삭제해 탐지를 회피했습니다. 보안 업체 Rapid7이 침해 지표(IoC)를 공개했으나, HAProxy를 최신 버전으로 업그레이드하더라도 이미 감염된 시스템은 치료되지 않으므로 바이너리 무결성 검사가 반드시 필요합니다.
북한 연계 위협 행위자(APT37/Lazarus/Kimsuky 연관 추정)가 한국 자동차·미디어 기업의 HAProxy 로드밸런서 실행 파일을 'ted' 백도어가 내장된 악성 버전으로 교체하고, 선택된 방문자에게 변조 페이지를 제공하며 원격 명령을 수신했습니다.
C2(원격 명령·제어) 통신이 로그와 연결 통계에서 완전히 삭제되어 탐지가 극히 어려우며, SSH 비밀번호 탈취·시스템 로그 조작·crond·sshd·agetty 등 핵심 바이너리 추가 변조, curlRAT 원격 접근 트로이목마 설치까지 이루어졌습니다.
HAProxy 자체의 취약점이 아니라, 공격자가 사전에 코드 실행 권한과 루트 권한을 확보한 뒤 실행 중인 합법적 바이너리를 악성 버전으로 직접 교체한 것입니다. 초기 침투 경로로는 한국형 그룹웨어 포털 노출이 유력하게 거론됩니다.
Rapid7이 IoC(도메인 6개·파일 경로·SHA-256 해시)를 공개했으며, 독립적인 네트워크 상관관계 분석, 메모리 행위 분석, 바이너리 무결성 검사를 권고했습니다.
HAProxy 업그레이드만으로는 이미 교체된 악성 바이너리를 제거할 수 없습니다. 공개된 SHA-256 해시로 실행 중인 HAProxy·sshd·crond 등의 바이너리를 대조하고, /tmp/jasper-log·~/cache/haproxy-1000.cache 등 의심 파일 경로와 로그 조작 흔적을 점검해야 합니다.
본문
이전에 문서화된 적 없는 Linux 툴킷이 한국 기업 두 곳의 트로이목마화된 HAProxy 로드밸런서에 직접 컴파일된 형태로 발견되었습니다. 이 툴킷은 웹 트래픽을 가로채고 선택된 방문자에게 변조된 페이지를 제공했습니다.
공격자들은 바이너리에 남겨진 디버그 문자열에서 이 임플란트를 ted라고 명명했습니다. 이것은 HAProxy의 취약점이 아니며, 설치를 위해서는 호스트에서의 코드 실행 권한과 실행 중인 바이너리를 교체할 수 있는 권한이 필요합니다.
Rapid7 Labs는 이 툴킷을 중간 수준의 신뢰도로 북한 국가 후원 행위자에게 귀속시켰으며, 두 피해 기업이 한국의 자동차 및 미디어 분야에 속한다고 밝혔습니다.
C2(명령·제어) 요청은 백엔드 서버에 도달하지 않으며 HAProxy 자체의 연결 카운터에서도 삭제되므로, 백엔드 로그나 로드밸런서 통계 어디에도 기록되지 않습니다.
Rapid7은 "보다 확정적인 평가를 위해서는 추가 증거가 필요하다"고 밝혔습니다.
금요일 공개된 보고서에서 Rapid7은, 특정 이미지 경로에 대한 요청이 필터를 C2 모드로 전환한다고 설명했습니다. 임플란트는 HAProxy의 활성 연결 카운터를 감소시켜 해당 연결을 로드밸런서 통계에서 제거합니다. 명령 본문은 /tmp 하위의 named pipe에 기록됩니다. 이후 요청 채널을 초기화하면 전달할 내용이 남지 않으며, 명령은 로드밸런서 수준에서 종료됩니다.
출력은 표준 HTTP/1.0 200 OK 헤더 아래 원시 소켓을 통해 반환되므로, 이 교신이 일반 웹 트래픽처럼 보이게 됩니다.
이 채널을 통해 공격자는 비컨 전송, 파일 업로드·다운로드, 셸 명령 실행, 임플란트 설정 교체가 가능합니다. 네 가지 검사를 모두 통과한 요청에 한해 변조된 페이지가 전달됩니다.
요청에는 User-Agent가 포함되어야 하며, URL과 리퍼러 패턴이 모두 규칙과 일치해야 합니다. 이후 전달 여부는 클라이언트 주소가 화이트리스트에 등재되어 있는지(정확 일치 및 /24 서브넷 수준으로 각각 확인), 또는 Accept-Language 헤더에 주소 필터링을 완전히 우회하는 운영자 키가 있는지에 따라 결정됩니다.
임플란트는 응답 전송 시 Content-Type과 Content-Length를 덮어쓰고 응답 상태를 강제로 200으로 설정하며, Accept-Ranges 헤더를 삭제해 클라이언트가 바이트 범위 요청을 통해 크기 변조를 알아채지 못하도록 합니다.
Rapid7은 공격자의 최초 침투 경로나 타임라인을 확정하기에 증거가 충분하지 않다고 밝혔습니다.
공격자가 노출된 그룹웨어 포털(한국형 기업 협업 소프트웨어)을 통해 진입했다는 가설은 Rapid7이 인용한 ENKI 연구에 근거합니다. 해당 보고서는 Kimsuky가 메일 서버 결함을 통해 그룹웨어 벤더를 침해한 사례를 문서화한 바 있습니다.
스테이저(stager)는 HAProxy 또는 cron이 이미 실행 중인 환경에만 배포되며, 파일을 투하하기 전 루트 권한을 확인합니다. 정상 crond 바이너리를 덮어쓰고 교체본에 /usr/bin/ssh의 생성 타임스탬프를 부여합니다. 이어서 루트의 bash 히스토리와 auth.log·audit/audit.log 등 6개 시스템 로그에서 tmp, wget, cron, crond 키워드를 삭제합니다.
같은 툴킷에 포함된 트로이목마화된 sshd는 평문 비밀번호를 캡처해 암호화한 뒤 고정된 경로에 기록합니다.
Rapid7은 트로이목마화된 agetty, atd, polkitd 바이너리에서도 동일한 코드를 발견했습니다. Rapid7이 curlRAT이라고 명명한 동반 원격 접근 트로이목마(RAT)는 기본적으로 12시간마다 비컨을 전송하며, 공격자가 플래그를 설정하면 30초 간격으로 단축됩니다. 호스트가 가상화 환경임을 나타내는 마커 파일이 없으면 실행을 중단합니다.
curlRAT은 파키스탄 연계 SideCopy 그룹에 귀속된 별개의 멀웨어 계열인 CurlBack RAT과는 다릅니다.
Rapid7은 다음과 같은 침해 지표(IoC)를 공유했습니다.
- 도메인 - img.monderhouse[.]space
- 도메인 - img.smartnords[.]site
- 도메인 - img.darklights[.]store
- 도메인 - img.responsive.pstatic[.]autos
- 도메인 - img.socialteams[.]store
- 도메인 - img.worksongo[.]store
- 파일 - ~/cache/haproxy-1000.cache
- 파일 - /var/lib/sshd/c8c68e629bba773a10ac80012d10bf19
- 파일 - /var/lib/snapd/g580
- 파일 - /tmp/jasper-log
- SHA-256 - 72e70936f0dbe459142a1d867617c35f8d0cce5d18c6a49e1090a2a5adc8e558
- SHA-256 - 4bb923eb040aa13ca8fd409c31ee4729c60ddff32e350efe1c5a4a9168a065f5
The Hacker News는 9월 4일 기준으로 6개 도메인 모두 Google Public DNS에서 A 레코드와 NS 레코드 모두 NXDOMAIN(해당 이름 없음)을 반환함을 확인했습니다. 따라서 이 도메인들은 실시간 트래픽 차단보다는 과거 로그 검토 목적으로 유용합니다.
귀속 판단의 일부는 오픈소스 탐지 프로젝트인 maltrail에서 해당 도메인들이 APT37 항목으로 등재된 데 근거합니다. Rapid7이 링크한 maltrail 파일은 8월에 프로젝트의 정적 트레일 데이터가 다른 위치로 이동되는 저장소 구조 변경 이후 접근이 끊겼습니다.
The Hacker News는 9월 4일 기준으로 6개 도메인 모두 새 위치에 존재하며, 각각 APT37 인프라로 표기되어 있음을 확인했습니다. maltrail의 APT37 소스 파일은 해당 항목의 출처를 2025년 7월 X(구 트위터) 게시물 두 건으로 기재하고 있으며, Rapid7에 대한 언급은 없습니다.
같은 maltrail 항목 두 건에는 Rapid7 목록에 없는 도메인 6개가 추가로 포함되어 있습니다: primgs[.]lol, admin.primgs[.]lol, grip-cdns[.]space, show.grip-cdns[.]space, cleanos[.]online, app.cleanos[.]online. Rapid7은 이 도메인들이 동일한 인프라인지 여부를 밝히지 않았습니다.
Rapid7이 같은 도메인들의 두 번째 출처로 언급한 ThreatFox 태그에는 다섯 건의 목격 기록이 있으며, 모두 2025년 7월 2일 타임스탬프입니다.
maltrail이 인용한 두 X 게시물 중 하나는 같은 날 세 시간 일찍 게시되었습니다.
귀속 섹션은 세 개의 북한 클러스터를 별개로 활용합니다: 도메인 목록은 APT37에서, 전달 모델은 Lazarus에서, 초기 침투 가설은 Kimsuky에서 각각 근거를 찾습니다.
Mandiant의 2023년 북한 사이버 구조 평가 보고서는 이 클러스터들 간의 툴링 공유와 표적 중복을 기록한 바 있습니다.
Mandiant는 "이로 인해 정확한 귀속이 더욱 어려워질 것"이라고 밝혔습니다.
Rapid7은 이 전달 모델을 Operation SyncHole 캠페인과 비교했습니다. SyncHole에서는 한국 온라인 미디어 사이트 방문자가 서버 측 스크립트를 통해 필터링된 후 리다이렉트되었습니다. Kaspersky 연구원 Sojun Ryu와 Vasily Berdnikov는 "중간 수준의 신뢰도"로, 리다이렉트된 페이지가 한국산 브라우저 도우미인 Cross EX의 취약점을 악용하는 악성 스크립트를 실행했을 수 있다고 평가했습니다.
Kaspersky의 SyncHole 보고서는 소프트웨어, IT, 금융, 반도체 제조, 통신 분야에서 최소 6개 피해 기업을 식별했습니다.
두 피해 기업 모두 2024년 11월 8일 출시된 HAProxy 2.8.12를 사용했습니다. 임플란트는 해당 릴리스에 고정된 오프셋으로 HAProxy의 내부 구조를 읽으며, Rapid7은 다른 2.8 빌드에서도 동일하게 동작하는지 여부를 밝히지 않았습니다.
해당 브랜치의 현재 릴리스는 2026년 8월 27일 출시된 2.8.28이며, 16개 포인트 릴리스 뒤의 버전입니다. HAProxy 이슈 트래커에는 2.8.12에 영향을 미치는 알려진 버그 529개가 해당 브랜치에서 이미 수정된 것으로 등록되어 있으며, 그 중 1개는 심각(critical), 16개는 주요(major) 등급입니다.
임플란트는 취약점이 아닌 바이너리 교체 방식으로 설치되므로, 업그레이드를 해도 이미 감염된 호스트는 복구되지 않습니다.
Rapid7은 독립적인 네트워크 상관관계 분석, 메모리 행위 분석, 바이너리 무결성 검사를 권고했습니다. 보고서는 마지막 검사를 위한 탐지 규칙을 공개하지 않았으며, 재컴파일된 HAProxy는 정상 빌드와 동일한 버전 문자열을 보고합니다.
한편, AhnLab과 ENKI WhiteHat도 7월에 유사한 워터링홀 캠페인을 문서화했습니다. 해당 캠페인에서는 국가 후원 공격자들이 한국 웹사이트를 침해해 AnySign4PC 서명 클라이언트를 표적으로 삼았습니다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






