HAProxy가 정상 작동해도 안심 못 한다…한국 기업 노린 Ted 백도어

Rapid7은 2026년 9월 4일 한국 자동차·미디어 분야 조직 두 곳에서 HAProxy 2.8.12에 직접 컴파일된 Ted 백도어를 분석해 공개했다. Rapid7의 기술 분석 에 따르면 변조된 HAProxy는 정상 부하분산을 계속하면서 복호화된 HTTP 요청을 가로채고, 원격 명령 실행과 선택적 스크립트 삽입을 지원했다.
따라서 확인 기준은 HAProxy가 응답하는지나 표시된 버전이 맞는지가 아니다. 실행 중인 바이너리를 신뢰할 수 있는 배포본과 비교하고, 비정상 캐시 파일과 변조된 시스템 데몬, SSH 자격 증명 흔적, 앞단 트래픽과 백엔드 로그의 불일치를 차례로 살펴야 한다. 9월 7일 나온 SecurityWeek의 후속 보도 도 Ted와 curlRAT, SSH 키로거, 변조된 crond·agetty·atd·sshd·polkitd가 원격 명령, 자격 증명 수집, 웹 트래픽 내 스크립트 삽입에 사용됐다고 전했다.
버전 점검으로는 변조된 HAProxy를 가려낼 수 없다

이번 사례는 HAProxy 2.8.12의 특정 취약점이 악용된 사건으로 확인되지 않았다. 공격자는 호스트에서 코드를 실행하고 바이너리를 교체할 수 있는 권한을 얻은 뒤, HAProxy 소스에 ted_plugin이라는 필터를 넣어 다시 컴파일한 것으로 분석됐다. 정상 빌드와 같은 버전 문자열을 표시하고 서비스도 계속하므로 상태 점검과 버전 조회만 통과할 수 있다.
조사는 서비스 설정에 적힌 경로가 아니라 실행 중인 프로세스가 실제로 참조하는 파일에서 시작해야 한다. 프로세스의 /proc 항목이 가리키는 실행 파일, 디스크에 설치된 파일, 패키지 관리자가 기록한 파일을 비교하고 SHA-256 값을 조직의 승인 산출물이나 검증된 저장소의 동일 빌드와 대조한다. 감염 호스트 내부에 저장된 기준 해시는 함께 변조됐을 가능성을 배제할 수 없어 독립된 기준이 필요하다.
공개된 Ted 해시와 일치하면 강한 침해 지표지만, 불일치가 안전을 뜻하지는 않는다. 공격자가 소스나 빌드 설정을 조금만 바꿔도 해시는 달라진다. 따라서 파일 크기, 패키지 검증 결과, 빌드 출처와 서명, 실행 중인 메모리에서 승인된 빌드에 없는 ted_* 함수나 비정상 스레드가 나타나는지도 함께 확인해야 한다.
캐시 파일과 시스템 데몬을 한 침해 범위로 묶어 본다
HAProxy 변조가 의심되면 재설치부터 하기보다 노드를 격리하고 휘발성 증거를 먼저 보존해야 한다. 메모리, 열린 파일, 환경 변수, 프로세스 목록과 네트워크 연결을 확보한 뒤 검증된 별도 장비로 서비스를 넘기면, 운영 중단을 줄이면서 후속 구성요소를 조사할 수 있다.
- 실행 파일과 설정 흔적을 확인한다. 사용자 홈의 ~/cache/haproxy-1000.cache와 haproxy-1001.cache·haproxy-1002.cache 계열을 찾는다. 분석된 Ted는 이 파일에서 동작 모드, 표적 정규식, 삽입할 스크립트와 운영자 키, IP 접근 목록을 읽었다.
- 시스템 데몬을 배포본과 대조한다. crond, agetty, atd, sshd, polkitd의 해시와 패키지 무결성을 검사한다. 정상적인 파일명과 서비스 상태만으로는 내부에 추가된 curlRAT 또는 자격 증명 수집 코드를 배제할 수 없다.
- 보조 파일을 보존한다. /var/lib/snapd/g580, /var/lib/snapd/g105, /tmp/jasper-log와 /tmp/t[연결 ID]_w.pipe 형태의 명명 파이프를 조사한다. 발견한 파일은 실행하거나 수정하지 말고 타임스탬프, 소유권, 연결된 프로세스를 함께 기록한다.
- SSH 노출 범위를 계산한다. 분석된 변조 sshd는 평문 비밀번호를 가로채 암호화한 뒤 /var/lib/sshd/c8c68e629bba773a10ac80012d10bf19에 저장했다. 해당 흔적이나 sshd 변조가 확인되면 그 장비를 거친 비밀번호와 키를 깨끗한 관리 단말에서 교체하고 내부 재사용 기록을 추적해야 한다.
변조 crond는 정상 파일을 덮어쓴 뒤 생성 시각을 /usr/bin/ssh와 같게 맞추도록 설계됐다. 최근 변경된 파일만 추리는 방식으로는 빠질 수 있다는 뜻이다. 패키지 데이터베이스, 골든 이미지, 감염 전에 외부로 전송된 파일 목록처럼 호스트 밖에 있는 기준과 비교해야 한다.
백엔드에 없는 요청을 앞단 기록에서 찾는다

Ted의 C2 요청은 로드밸런서 내부에서 끝난다. 특정 요청이 들어오면 HAProxy의 연결·요청·바이트 카운터를 줄이고 요청 본문을 /tmp의 명명 파이프로 보낸 뒤, 백엔드로 전달할 버퍼를 비운다. 공격자에게는 일반적인 HTTP 응답을 돌려주지만 백엔드 애플리케이션 로그와 HAProxy 통계에는 해당 교환이 남지 않을 수 있다.
The Hacker News의 검증 보도 는 C2 모드 진입 경로가 /favorite_list_2x_m500_ico.jpg이며, 공개된 6개 C2 도메인이 9월 4일 Google Public DNS의 A·NS 조회에서 모두 NXDOMAIN을 반환했다고 확인했다. 이 경로와 img.monderhouse[.]space, img.smartnords[.]site, img.darklights[.]store, img.responsive.pstatic[.]autos, img.socialteams[.]store, img.worksongo[.]store는 현재 접속 여부보다 과거 DNS·프록시·방화벽 기록을 소급 검색하는 지표로 활용하는 편이 적절하다.
탐지팀은 TLS 종료 지점 앞의 패킷 기록이나 독립 프록시 로그를 백엔드 액세스 로그와 시간대별로 대조할 수 있다. 앞단에서 완결된 HTTP 교환이 보이는데 대응하는 백엔드 요청이 없거나, 외부 센서가 센 연결·바이트 증가량보다 HAProxy 통계가 반복적으로 작다면 우선 조사할 근거가 된다. 다만 헬스체크, 캐시, 로컬 오류 응답도 차이를 만들 수 있으므로 단일 불일치만으로 감염을 판정해서는 안 된다.
curlRAT는 기본적으로 12시간마다 C2를 확인하며 운영자 설정에 따라 간격이 30초로 줄어들 수 있다. 짧은 관찰 시간에 외부 통신이 없었다는 이유만으로 제외하기 어려운 구조다. 수일간의 DNS와 HTTPS 목적지, 비정상 User-token 헤더, 통신 주기를 검토하고 HAProxy 프로세스가 예상 밖의 외부 주소에 직접 연결하는지도 확인해야 한다.
로그 내용보다 기록의 연속성을 비교한다

연계 스테이저는 /tmp/jasper-log를 중간 파일로 사용해 /root/.bash_history와 messages, audit/audit.log, cmd.log, secure, syslog, auth.log에서 tmp, wget, cron, crond가 포함된 흔적을 선택적으로 지웠다. 로그 파일 전체가 사라지는 방식이 아니어서 파일 존재 여부나 최근 오류만 보는 점검에는 이상이 없는 것처럼 보일 수 있다.
이때 필요한 것은 로그 연속성 비교다. 중앙 SIEM이나 원격 syslog에 이미 전송된 기록과 로컬 파일을 맞춰 보고, 이벤트 순번·수집량·타임스탬프 간격·파일 메타데이터가 비정상적으로 달라진 구간을 찾는다. auditd의 프로세스 실행, 인증 로그, 셸 이력과 서비스 재시작 기록 가운데 한쪽에만 사건이 남아 있는지도 교차 확인해야 한다.
메모리와 런타임 흔적도 공개 해시를 피한 변종을 찾는 데 도움이 된다. HAProxy의 정상 필터 API를 이용하지만 승인 빌드에는 없는 ted_* 함수, /tmp의 명명 파이프, HAPROXY_MWORKER_PP_READ와 HAPROXY_MWORKER_PP_WRITE 환경 변수에 연결된 예상 밖의 파이프를 조사한다. 바이너리 해시, 파일 흔적, 메모리 행위 가운데 하나만 독립적인 안전 판정 기준으로 삼아서는 안 된다.
격리 뒤에도 HAProxy만 교체해서는 끝나지 않는다
침해가 확인된 호스트에서 HAProxy 실행 파일만 정상본으로 덮어쓰는 조치는 충분하지 않다. 같은 도구 모음이 여러 시스템 데몬을 변조했고 SSH 평문 비밀번호와 웹 세션 쿠키를 수집할 수 있었기 때문이다. 포렌식 복제본과 메모리 증거를 확보한 뒤 신뢰할 수 있는 이미지로 호스트를 재구축하고, 침해 기간에 사용된 관리자·서비스 계정, SSH 키와 웹 세션을 폐기해야 한다.
점검 순서는 실행 파일 무결성, Ted 캐시와 보조 파일, 시스템 데몬, SSH 자격 증명, 독립 네트워크 기록과 로컬 로그의 차이로 잡을 수 있다. 강한 지표가 발견되면 같은 관리 계정이나 배포 경로를 공유한 다른 HAProxy·Linux 서버까지 범위를 넓힌다. 재구축한 장비에는 외부에서 검증한 패키지와 설정만 반입하고 감염 호스트의 실행 파일이나 라이브러리는 재사용하지 않아야 한다.
공개된 분석만으로는 피해 조직의 이름, 정확한 최초 침투 경로와 전체 활동 기간이 확정되지 않았다. Rapid7의 북한 연계 판단도 표적과 인프라, 기존 전술의 유사성을 근거로 한 중간 수준 신뢰도 평가다. 현재 확인된 범위는 한국 조직 두 곳에서 정상 기능을 유지하는 변조 HAProxy와 연계 Linux 도구가 발견됐다는 사실이며, 추가 피해 범위와 최초 진입점은 후속 포렌식과 새로운 지표 공개가 필요하다.
뉴스레터 구독
최신 Web3, AI, 암호화폐 뉴스를 이메일로 받아보세요.