COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
워터링 홀 공격은 2024년 Lazarus, APT29 등이 악용하는 초기 접근 기법입니다. 작동 원리, 최신 사례, 방어 방법을 MITRE ATT&CK 프레임워크로 분석했습니다. 지금 확인하세요.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
MITRE ATT&CK: T1189 (Drive-by Compromise) | 전술: Initial Access | 플랫폼: Windows, macOS, Linux
매일 아침 출근하면 여는 뉴스 사이트가 있다. 업계 동향을 확인하는 전문 포럼도 있다. 의심 없이 클릭한다. 항상 그랬으니까.
그런데 만약, 그 사이트에 누군가 덫을 놓아뒀다면?
아프리카 사바나를 떠올려보자.
사자는 영양을 쫓아다니지 않는다. 대신 물웅덩이 옆에 숨는다. 영양은 반드시 물을 마시러 올 것이고, 그때 덮치면 된다. 쫓아다니는 것보다 훨씬 효율적이다.
워터링 홀 공격(Watering Hole Attack) 은 정확히 이 원리다.
공격자는 피해자에게 직접 접근하지 않는다. 대신 피해자가 평소 신뢰하고 자주 방문하는 웹사이트를 먼저 장악한다. 그리고 거기서 기다린다. 피해자가 평소처럼 그 사이트에 접속하는 순간, 악성코드가 조용히 심어진다.
피싱 이메일은 "낚시"다. 미끼를 던져서 물고기가 물기를 기다린다. 워터링 홀은 다르다. 물고기가 반드시 지나가는 길목에 그물을 쳐놓는 것이다.
차이가 느껴지는가? 피싱은 의심할 수 있다. 이상한 이메일, 낯선 링크. 하지만 워터링 홀은? 매일 가던 사이트다. 의심할 이유가 없다.
"보안 교육 열심히 받으면 괜찮지 않아?"
솔직히 말하면, 이 공격 앞에서는 보안 교육이 무력해진다. 이유는 세 가지다.
피싱 이메일은 주의 깊은 사람이 걸러낼 수 있다. 발신자가 이상하거나, 링크 주소가 수상하거나. 하지만 워터링 홀은 진짜 웹사이트를 쓴다. 사용자 입장에서는 평소와 완전히 동일한 경험이다. 화면이 바뀌지도 않고, 팝업이 뜨지도 않는다. 백그라운드에서 조용히 감염이 진행될 뿐이다.
보안 장비 입장에서도 골치 아프다. 사용자가 합법적인 웹사이트에 접속한 것이니, 트래픽 자체는 정상이다. 악성 코드는 정상 웹 콘텐츠 사이에 숨어있고, 감염 후에도 즉시 이상 행동을 보이지 않는 경우가 많다. 보안팀이 "어, 이거 이상한데?"라고 눈치채는 데 수주, 수개월이 걸릴 수 있다.
피싱은 한 명 한 명 노려야 한다. 워터링 홀은? 웹사이트 하나만 장악하면, 그 사이트를 방문하는 표적 조직의 구성원 전체가 잠재적 피해자다. 게다가 IP 대역이나 브라우저 언어 설정을 확인해서 원하는 표적에게만 악성코드를 내려보낼 수 있다. 나머지 방문자에게는 아무 일도 일어나지 않는다. 그래서 발각도 더 늦어진다.
"이론적으로 위험하다는 건 알겠는데, 실제로도 그래?"
실제 사례를 보면 이 공격이 얼마나 현실적인 위협인지 알 수 있다. 최근 2년간의 사례만 봐도 충분하다.
2024-2025 최신 사례
| 항목 | 상세 |
|---|---|
| 공격 그룹 | Lazarus Group (HIDDEN COBRA) - G0032 |
| 배후 | 북한 정찰총국 |
| 표적 | 대한민국 - 소프트웨어, IT, 금융, 반도체, 통신 |
| 침해 사이트 | 한국 온라인 미디어 사이트 |
| 악용 취약점 | Cross EX 소프트웨어 취약점, Innorix Agent 제로데이 (KVE-2025-0014) |
| 악성코드 | ThreatNeedle, SIGNBT, COPPERHEDGE |
이 사례가 특히 주목받는 이유가 있다.
Lazarus는 한국의 온라인 미디어 사이트를 장악한 뒤, 방문자를 악성 도메인으로 리다이렉트시켰다. 여기까지는 전형적인 워터링 홀이다. 그런데 다음 단계가 치밀했다. 한국에서 널리 사용되는 Cross EX 보안 소프트웨어의 취약점을 악용한 것이다. 보안을 위해 설치한 소프트웨어가 오히려 공격의 통로가 됐다.
여기서 끝이 아니다. Innorix Agent의 제로데이 취약점으로 내부 네트워크 횡이동까지 수행했다. Curve25519 비대칭 암호화를 적용하고, 모듈화된 악성코드 구조에 플러그인 로딩 기능까지 갖췄다. 최소 6개 한국 기업의 감염이 확인됐다.
출처: Kaspersky Securelist - Operation SyncHole
| 항목 | 상세 |
|---|---|
| 공격 그룹 | APT29 (Cozy Bear, Midnight Blizzard) |
| 배후 | 러시아 SVR (해외정보국) |
| 표적 | 몽골 정부기관 |
| 침해 사이트 | cabinet.gov.mn, mfa.gov.mn |
| 악용 취약점 | (iOS Safari), , (Chrome) |
Google TAG가 발견한 이 캠페인에서 가장 흥미로운 점은 익스플로잇의 출처다.
APT29가 사용한 익스플로잇이 Intellexa, NSO Group 같은 상용 스파이웨어 업체의 것과 동일했다. 국가 지원 해킹 그룹이 상용 스파이웨어 업체의 도구를 재사용하고 있다는 뜻이다. 공격은 약 8개월에 걸쳐 세 차례 진행됐다. 2023년 11월 내각 사이트, 2024년 2월과 7월에 외교부 사이트를 침해했다.
출처: Google TAG Blog | The Record
| 항목 | 상세 |
|---|---|
| 공격 그룹 | 미상 |
| 표적 | 일본 학술/연구 기관 |
| 침해 사이트 | 대학 연구실 웹사이트 |
| C2 서버 | Cloudflare Workers |
| 악성코드 | Cobalt Strike Beacon v4.5 |
이 사례는 접근 방식이 좀 달랐다. 취약점 대신 소셜 엔지니어링을 사용했다.
침해된 대학 웹사이트를 방문하면 가짜 Adobe Flash Player 업데이트 화면이 뜬다. Flash Player는 2020년에 지원이 종료됐는데도, 아직도 "업데이트하세요"라는 팝업에 속는 사람이 있다. JPCERT/CC에 따르면, 이 악성코드는 Early Bird Injection 기법을 사용하고 가상 환경과 안티바이러스를 탐지하는 기능까지 갖추고 있었다.
출처: JPCERT/CC Blog
| 항목 | 상세 |
|---|---|
| 공격 그룹 | Evasive Panda |
| 배후 | 중국 |
| 표적 | 티베트 사용자 |
| 악성코드 | MgBot, Nightdoor |
| 플랫폼 | Windows, macOS |
ESET이 발견한 이 캠페인은 워터링 홀과 공급망 공격을 동시에 사용했다는 점에서 눈에 띈다. 최소 3개의 웹사이트를 침해하여 워터링 홀 공격을 수행하면서, 동시에 티베트 소프트웨어 회사의 공급망을 장악해 악성 다운로더를 배포했다. 한 가지 경로가 막혀도 다른 경로로 침투할 수 있도록 보험을 든 셈이다.
출처: The Hacker News
과거 주요 사례
과거 사례도 중요하다. 패턴이 보이기 때문이다.
| 항목 | 상세 |
|---|---|
| 공격 그룹 | APT32 (OceanLotus) - G0050 |
| 배후 | 베트남 정부 |
| 표적 | 캄보디아, 필리핀, 베트남 반체제 인사 |
| 침해 사이트 | 캄보디아 선거관리위원회, 필리핀 정부 사이트 |
APT32는 캄보디아 선거 시즌에 맞춰 선거관리위원회 웹사이트를 침해했다. 타이밍이 핵심이었다. 선거 기간에는 정부 관계자들이 선거관리위원회 사이트를 평소보다 훨씬 자주 방문한다. 공격자는 이 패턴을 정확히 파악하고 있었다.
출처: Volexity - OceanLotus | MITRE ATT&CK - APT32
| 항목 | 상세 |
|---|---|
| 공격 그룹 | Lazarus Group - G0032 |
| 배후 | 북한 정찰총국 |
| 표적 | 폴란드 외 31개국 금융기관 |
| 침해 사이트 | 폴란드 금융감독원(KNF) 공식 사이트 |
| 악성코드 | Ratankba (S0241) |
이 사례가 워터링 홀 공격의 정석이라 할 수 있다.
은행 직원들은 규제 정보를 확인하기 위해 금융감독원 사이트를 반드시 방문해야 한다. Lazarus는 이 점을 노렸다. KNF 사이트에 악성 JavaScript를 삽입했고, 금융기관 직원들이 접속할 때마다 Ratankba 악성코드가 설치됐다. 폴란드 내 20개 이상 은행이 감염됐고, 전 세계 104개 금융기관이 표적 목록에 올라 있었다.
| 항목 | 상세 |
|---|---|
| 공격 그룹 | ScarCruft (APT37, Reaper) - G0067 |
| 배후 | 북한 정찰총국 |
| 표적 | 대한민국 - 정부기관, 탈북자 관련 단체 |
| 침해 사이트 | 북한/통일 관련 정보 사이트 |
ScarCruft는 북한 인권 및 탈북자 관련 웹사이트를 침해했다. 표적이 명확했다. 이 사이트를 방문하는 사람은 기자, 연구원, 정부 관계자뿐이다. 일반인이 북한 인권 관련 전문 사이트를 일상적으로 방문하지는 않는다. 공격자는 웹사이트의 성격만으로 방문자를 필터링한 셈이다.
출처: Kaspersky - ScarCruft Analysis | MITRE ATT&CK - APT37
사례를 봤으니 패턴이 보인다. 워터링 홀 공격은 크게 네 단계로 진행된다.
공격자가 가장 먼저 하는 일은 표적의 웹 서핑 습관을 파악하는 것이다.
LinkedIn이나 SNS에서 표적 조직 구성원들의 활동을 분석한다. 어떤 업계 포럼에 글을 올리는지, 어떤 뉴스 사이트를 공유하는지. 업종별 필수 방문 사이트도 파악한다. 금융권이면 금융감독원, 보안업계면 보안 뉴스 사이트, 학계면 학회 홈페이지.
폴란드 KNF 사례를 떠올려보자. "은행 직원은 금융감독원 사이트에 반드시 간다." 이 한 문장이 공격의 시작이었다.
표적이 자주 가는 사이트 중 보안이 상대적으로 취약한 곳을 찾는다. 웹 애플리케이션 취약점(SQL 인젝션, XSS 등), CMS의 알려진 취약점, 서버 자체의 보안 허점을 노린다.
여기서 중요한 점이 있다. 공격자가 노리는 건 대형 포털이 아니다. 보안 투자가 상대적으로 적은 중소 규모의 전문 사이트다. 대학 연구실 홈페이지, 업계 전문 포럼, 지역 정부 사이트 같은 곳이다.
사이트를 장악하면 악성 코드를 심는다. 이 과정이 정밀하다.
웹사이트의 정상 기능은 전혀 건드리지 않는다. 관리자도 방문자도 눈치채지 못한다. 악성 코드는 특정 조건을 만족하는 방문자에게만 실행된다. IP 대역, 브라우저 종류, 운영체제, 언어 설정을 확인해서 표적이 맞을 때만 동작한다. 이렇게 하면 보안 연구자나 일반 방문자의 눈에 띄지 않는다.
이제 공격자는 아무것도 하지 않아도 된다. 표적이 평소처럼 그 사이트에 접속하면, 브라우저 취약점을 통해 자동으로 악성코드가 설치된다. 피해자는 평소와 다른 점을 전혀 느끼지 못한다.
| 항목 | 상세 |
|---|---|
| MITRE ID | T1189 |
| 기법명 | Drive-by Compromise |
| 전술 | Initial Access |
| 플랫폼 | Windows, Linux, macOS, SaaS |
| 데이터 소스 | Application Log, File, Network Traffic, Process |
솔직히 어렵다. 사용자 입장에서는 정상적인 웹사이트 방문이니까. 하지만 불가능한 건 아니다.
브라우저와 소프트웨어 업데이트
가장 기본이지만 가장 효과적이다. 워터링 홀 공격의 대부분은 브라우저나 플러그인의 알려진 취약점을 이용한다. 물론 Operation SyncHole처럼 제로데이를 쓰는 경우도 있지만, 그건 예외적인 고급 공격이다. 대다수는 패치된 취약점을 노린다.
웹 프록시와 실시간 URL 검사
조직 차원에서 웹 트래픽을 모니터링하고, 의심스러운 JavaScript 실행을 차단한다. 알려진 악성 도메인으로의 리다이렉트도 걸러낸다.
EDR(Endpoint Detection and Response)
행위 기반으로 탐지한다. 웹 브라우저에서 비정상적인 프로세스가 생성되거나, 예상치 못한 파일이 다운로드되는 패턴을 잡아낸다. 시그니처 기반 탐지로는 잡기 어려운 것들을 행위 분석으로 보완하는 것이다.
네트워크 모니터링
DNS 쿼리 패턴을 분석하고, 비정상적인 외부 통신을 탐지한다. 특히 평소 없던 외부 서버와의 통신이 갑자기 생기면 주의 깊게 살펴봐야 한다.
네트워크 세분화
중요 시스템을 일반 업무 네트워크와 분리한다. 설령 한 대가 감염되더라도 내부 확산을 막을 수 있다. Lazarus가 Innorix Agent 취약점으로 횡이동한 사례를 생각하면, 네트워크 분리의 중요성이 더 잘 와닿을 것이다.
위협 인텔리전스 활용
최신 워터링 홀 캠페인 정보를 지속적으로 수집한다. 어떤 사이트가 침해됐는지, 어떤 공격 그룹이 활동 중인지 파악하고 있어야 빠르게 대응할 수 있다.
보안 인식 교육
"피싱 메일만 조심하면 된다"는 인식을 바꿔야 한다. 신뢰하는 웹사이트에서도 예상치 못한 파일 다운로드 요청이 뜨거나, 갑자기 소프트웨어 업데이트를 요구하면 일단 의심하도록 교육한다.
가장 큰 차이는 가짜 vs 진짜다. 피싱은 공격자가 가짜 사이트를 만들거나 가짜 이메일을 보낸다. 주의 깊게 보면 가려낼 수 있다. 반면 워터링 홀은 진짜 웹사이트를 장악한다. 사용자가 보는 건 진짜 사이트이고, URL도 진짜다. 그래서 아무리 주의 깊은 사람도 알아차리기 어렵다.
워터링 홀 공격은 주로 특정 조직이나 업계를 노린다. 하지만 APT29의 몽골 정부 사이트 공격처럼, 정부 서비스 사이트를 방문하는 일반 시민도 피해를 입을 수 있다. 업계 전문 포럼, 정부 서비스 사이트, 지역 뉴스 사이트를 자주 쓴다면 완전히 안심할 수는 없다.
반드시 필요하지만 충분하지는 않다. Operation SyncHole에서 Lazarus는 제로데이 취약점을 사용했다. 패치가 아직 나오지 않은 취약점이니, 브라우저를 아무리 업데이트해도 막을 수 없다. 브라우저 업데이트는 기본이고, 여기에 EDR, 네트워크 모니터링, 네트워크 분리까지 여러 겹의 방어가 필요하다.
솔직히 개인이 직접 알아차리기는 매우 어렵다. 다만 이런 징후가 있다면 의심해볼 수 있다.
조직 차원에서는 네트워크 트래픽 분석과 EDR 로그 모니터링이 가장 현실적인 탐지 방법이다.
네 가지 이유가 있다.
핵심 다섯 가지다.
관련 MITRE ATT&CK 기법
워터링 홀이 사용된 실제 사건
관련 보안 주제
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.