[IT 알아보기]/IT 소식

[IT 소식] 클레이스왑 해킹으로 드러난 BGP Hijacking 공격기법, 도대체 뭐길래?

이호스트ICT 2022. 2. 15. 06:02

 


클레이스왑 해킹으로 드러난 BGP Hijacking 공격기법, 도대체 뭐길래?

S2W의 Talon에서 발표한 클레이스왑 사고의 상세 분석 보고서 살펴보니
공격자들이 악용한 BGP Hijacking 기법과 자금 흐름, 대응방안 등 자세히 소개
BGP Hijacking 공격의 경우 모니터링과 IP Prefix Filtering, RPKI로 대응 필요

[보안뉴스 권 준 기자] 지난 2월 3일 국내 최대 규모 디파이(Defi, 탈중앙화 금융) 서비스 ‘클레이스왑(KLAYswap)’에서 22억 규모에 달하는 가상자산(암호화폐)이 탈취되는 사건이 발생해 커다란 충격을 준 바 있다. 이러한 가운데 클레이스왑 해킹에 ‘BGP Hijacking’ 공격기법이 동원됐다는 내용과 함께 전체적인 사고의 흐름, 공격 수법, 대응방안 등을 다룬 상세 분석 보고서가 발표돼 큰 관심을 모으고 있다.

[이미지=utoimage]



데이터 인텔리전스 기업 에스투더블유(S2W)의 CTI 그룹인 Talon(탈론)에서 발표한 클레이스왑 사고의 상세 분석 보고서에 따르면 이번 공격에는 국내에서는 다소 생소한 ‘BGP Hijacking’ 기법이 악용된 것으로 드러났다. 이에 <보안뉴스>에서는 보고서 내용을 중심으로 해당 공격기법에 대한 자세한 설명과 함께 공격자의 사전 준비 정황과 자금 흐름 추적, 다크웹과의 연관성, 그리고 대응방안 등을 요약해 소개한다.

클레이스왑에서 공개한 Incident Report에 따르면 2022년 2월 3일 11:31:41경(한국시간 기준), 클레이스왑 UI를 통해 토큰(암호화폐)이 공격자의 특정 지갑으로 전송되는 이상 트랜잭션이 최초로 실행된 것으로 알려졌다. 해당 사고의 원인으로 외부 네트워크망 공격에 의한 사용자의 Kakao SDK 파일 위장 악성코드 다운로드가 제기됐다.

클레이스왑 뿐만 아니라 카카오톡 관련 서비스들은 마케팅 목적으로 카카오 SDK(Software Development Kit)라는 파일을 동적으로 로딩해 사용하는데, 해당 공격이 이루어지는 동안 ‘카카오톡 QR체크인’, ‘카카오맵’, ‘다음’ 등과 같은 해당 SDK를 사용하는 서비스에서 접속이 되지 않거나 느려지는 문제가 발생한 것으로 드러났다.

이는 본지가 ‘카카오, QR체크인과 다음 등 서비스 오류로 먹통돼’라는 제목의 2월 3일자 기사를 통해 카카오 QR체크인과 카카오맵, 그리고 포털 서비스 ‘다음’ 일부 페이지 등이 3일 오전 오류를 일으켰다는 기사에서도 확인할 수 있다.

S2W에서 해당 사건과 관련된 분석을 진행한 결과, 클레이스왑에서 언급한 외부 네트워크망 공격에 BGP Hijacking 기법이 활용된 것으로 파악된 것이다. 공격자는 BGP Hijacking을 통해 네트워크 흐름을 조작함으로써 클레이스왑에 접속한 일반 사용자들이 정상적인 SDK 파일이 아닌 공격자가 세팅한 서버로부터 악성코드를 다운로드 받도록 구성한 것으로 드러났다.

이에 따라 접속 시 HTTP 헤더의 Referer 값을 확인하여 클레이스왑을 통해 접속한 사용자들에게만 악성코드를 유포했으며, 이외의 유저들에게는 서버 쪽 에러로 반환시킨 것으로 알려졌다. 이러한 이유 때문에 해당 SDK를 사용하는 이외 서비스들에 대한 접속 장애가 이루어졌던 것으로 보인다.

이번 공격으로 인해 2월 3일 11시 30분부터 1시간 30분동안 클레이스왑 사용자가 자산 예치·스왑·인출 등을 요청할 경우, 즉시 악성코드에 명시된 해커의 지갑으로 코인이 전송됐으며, 블록체인 트랜잭션을 분석한 결과 탈취된 코인은 약 22억원의 가치이지만, 실제 공격자는 최종적으로 약 10억원 가치의 코인을 탈취해간 것으로 확인됐다는 게 S2W 측의 설명이다.



▲클레이스왑 해킹 사고 전체 타임라인[자료=S2W]





‘BGP Hijacking’ 공격기법은?


인터넷은 전 세계 호스트들이 고유한 IP 주소를 기반으로 언제 어디서나 데이터를 주고받을 수 있는 글로벌 네트워크이다. 서로 다른 IP 주소를 가진 호스트들은 최단 이동거리를 관리하고, 서로에게 자신이 관리하고 있는 IP 대역을 알려주는 라우터에 의해 통신이 가능해지는데, 이러한 IP 대역을 프리픽스(prefix)로 관리하는 것이 바로 AS(Autonomous System)이다. 이로 인해 AS들은 IP 프리픽스(예, 128.6.0.0/16)를 관리하는 최신 라우팅 테이블이 정기적으로 업데이트되어야 하는데, 이처럼 자신의 라우팅 테이블을 서로에게 공유할 때 BGP(Border Gateway Protocol)라는 프로토콜이 사용된다.

BGP Hijacking이란 AS 간에 라우팅 테이블을 공유하는 BGP 프로토콜을 악용하여 공격자가 임의로 설정한 라우팅 테이블을 인접한 AS에 퍼뜨리는 것을 의미한다. BGP 프로토콜은 신뢰도를 고려하지 않고 가장 빠른 경로만을 따라가기 때문에 공격자는 공격 대상의 라우팅 경로를 분석한 후, 원하는 경로로 네트워크의 흐름을 변경해 중간에 있는 AS를 공격하거나 자신의 의도대로 라우팅 정책을 설정함으로써 네트워크 마비, 데이터 가로채기 등의 행위가 가능해지는 셈이다.

공격을 당하는 대상의 입장에서는 서버 및 서비스 간에 어떠한 이슈 발생 없이 네트워크의 흐름이 일방적으로 변경되는 것이기 때문에 뚜렷한 원인 없이 트래픽이 발생하지 않는 상황을 접하게 된다. 이러한 공격 범위는 AS 운영에 개입할 수 없는 일반 기업이 대응할 수 있는 범주를 넘어서는 것이라고 할 수 있다.

이번 클레이스왑 공격에서의 주요 타임라인은 다음과 같다. 2월 3일 10시 4분 BGP Hijacking 시도가 최초 확인됐고, 11시 9분에 BGP Hijacking 시도가 추가 확인됐으며, 11시 30분에 카카오 SDK 관련 서비스가 중지된 것으로 분석됐다. 그때부터 1분 정도 이상 트랜젝션이 최초 발생했으며, 오후 1시 4분에 BGP Hijacking 공격이 철회된 것으로 추정된다. 오후 1시 28분에 공격 철회로 인해 정상 라우팅 경로로 갱신됐고, 오후 1시 30분에 카카오 SDK 관련 서비스가 복구됐다. 그러나 또 다른 오염 대역에서는 원래 라우팅 경로로의 갱신이 최소 오후 5시까지 이루어지지 않았으며, 그로 인해 피해가 지속되면서 오후 6시 1분까지 이상 트랜잭션이 발생된 것으로 추정된다.

공격자가 악용한 SSL 인증서는?


Kakao SDK 파일 다운로드 경로는 HTTPS 프로토콜로 연결되기 때문에 BGP Hijacking 공격을 수행하더라도 인증서가 일치하지 않으면 정상적인 응답을 줄 수 없다. 이에 공격자들은 공격 직전, ZeroSSL이라는 해외 SSL 인증서 발급사에서 3개월 동안 무료로 제공하는 서비스를 통해 developers[.]kakao.com 도메인에 대한 인증서를 발급 및 등록한 것으로 드러났다. BGP Hijacking으로 인해 라우팅 정책이 이미 오염된 상태이기 때문에 이러한 임의의 인증서 등록이 가능했던 것이다.

이렇듯 공격자가 발급한 임의의 인증서에 대한 사전 인증서(Precertificate)가 2월 3일 11시 27분 로그에 추가됐고, 1초 뒤 위 도메인에 대한 인증서(Leaf certificate)가 정상적으로 발급되어 활성화된 것으로 드러났다.

공격에 사용된 악성 JS 파일은?


클레이스왑 공격에 사용된 악성 kakao.min.js 파일은 정상 kakao.min.js 파일과 비교하여 파일 크기가 매우 큰 것으로 알려졌다. S2W 분석결과, 악성 kakao.min.js 파일은 웹 애플리케이션에 사용되는 다양한 모듈을 통합해 하나의 파일로 생성하는 webpack 파일로 확인됐으며, 기존 정상 SDK 관련 코드는 물론 클레이스왑에서 실제로 사용하는 기존 가상자산 관련 코드들을 공격자가 수정해 사용한 것으로 조사됐다.

악성 kakao.min.js 파일의 마지막 부분에는 가상자산 탈취를 위해 공격자의 탈취용 Account 및 탈취용 Factory Contract 주소 정보가 명시되어 있었다. 이로 인해 악성코드를 다운로드 받은 피해 유저는 클레이스왑에서 가상자산 전송 시 의도된 주소가 아닌 공격자의 주소로 전송될 밖에 없었다는 설명이다. 공격자들은 이러한 주소 변경 외에도 클레이스왑이 사용하는 블록체인 플랫폼 클레이튼(Klayton) API 주소를 조작해 사용한 것으로 드러났다. 정상 API 서버 주소가 아닌, 공격자가 설정한 주소로 변경해 탐지를 우회하고, 별도의 처리를 수행하기 위한 것으로 추정된다.

공격자들의 사전 준비과정은?


클레이스왑에서 사용자가 토큰 스왑 등의 기능을 수행할 때는 Factory Contract가 토큰 컨트랙트에게 사용 승인을 부여받는 과정이 필요하다. 권한이 승인되면 Factory Contract는 해당 토큰에 대한 권한을 위임 받아 사용할 수 있다. 이에 따라 악성 JS로 인해 최초 피해자의 자산 유출에 대해 공격자의 탈취용 Factory Contract에 먼저 거래 승인이 요청됐고, 이후 토큰 Contract로부터 정상적으로 승인되어 공격자의 탈취용 Account로 강제로 토큰이 전송된 것으로 알려졌다.

이처럼 탈취용 Factory Contract는 실제 공격이 발생한 2월 3일 11시 30분부터 피해자들로부터 토큰을 탈취하기 위한 거래 승인에 사용됐고, 탈취된 토큰은 모두 공격자의 탈취용 Account로 전송된 것이다. 이처럼 탈취용 Factory Contract를 생성한 공격자 Account는 약 7개월 전인 2021년 6월 29일 8시 31분부터 2022년 1월 7일 2시 49분까지의 기간 동안 테스트를 위한 트랜잭션을 다수 수행했으며, 실제 공격 발생 약 1달 전인 2022년 1월 5일 8시 49분에도 트랜잭션 테스트를 위해 마지막 테스트용 Factory Contract를 생성한 것으로 분석됐다. 이로 미뤄볼 때, 공격자들은 최소 7개월 이전부터 클레이스왑 해킹을 위한 준비 작업에 들어갔으며, 실제 공격 1개월 전인 2022년 1월 5일에 마지막 테스트와 함게 공격을 위한 사전 준비를 마친 것으로 추정된다.

공격자들의 탈취 코인 인출 과정은?


공격자들은 공격 발생 직후인 2월 3일 11시 31분의 최초 입금을 시작으로, 2022년 2월 3일 12시 42분까지 자금 이동을 수행하지 않다가 12시 42분에 클레이스왑을 통해 탈취한 자금의 일부를 최초로 스왑한 것으로 나타났다. 이후 공격자는 KLAY 기반 토큰(KETH, KUSDT, KXRP 등)으로 변환하는 작업을 추가로 수행했으며, 최종적으로 다양한 디파이 코인들의 스왑을 지원하는 중국의 라이트닝 거래소인 FixedFloat에 Tether, Dai Stablecoin, USD coin 등의 코인으로 전송한 것으로 확인됐다.

클레이스왑 측에서 공지한 22억원이라는 피해 금액 규모는 각 코인 및 토큰들에서 전송된 수량을 모두 계산해 산출된 것으로 추정되는데, S2W 블록체인 분석 솔루션 ‘eyez’를 이용해 분석한 결과, 실제 피해 추정금액은 16억 7천만원 규모, 공격자가 스왑에 성공한 금액은 10억 7천만원 규모로 추정된다는 설명이다.

악성파일에 언급된 ‘DARKODE’ 키워드의 의미는?


이번 사건의 공격 주체와 관련해서는 악성 kakao.min.js 파일에서 언급된 ‘DARKODE’라는 키워드와 관련된 위협 그룹에 대한 조사결과, 위협 그룹보다는 과거 딥웹에서 DARKODE라는 이름으로 운영된 언더그라운드 포럼이 발견됐다. 하지만, 이번 공격과의 연관성은 명확히 확인되지 않았다는 게 S2W 측의 설명이다.

과거 DARKODE 라고 알려진 Dark0de 언더그라운드 포럼은 2007년부터 2015년까지 darkode[.]com 도메인으로 가입한 회원만 활동을 할 수 있는 딥웹 형태로 운영됐는데, 해당 포럼에는 해킹 서비스, 봇넷, 악성코드, 개인정보, 신용카드, 크리덴셜, 마약 등이 주로 판매된 것으로 드러났다. 더욱이 2015년 7월에 발표된 FBI의 공식 입장에 따르면, Dark0de 언더그라운드 포럼의 도메인은 FBI와 유로폴(EUROPOL)에 의해 압수됐으며, 이들의 활동을 중단시킨 사실이 공개된 바 있다.

하지만 6년의 시간이 흐른 뒤 2021년 1월, 다크웹 포럼인 Dread와 일반 커뮤니티인 Reddit에 예고 없이 Dark0de Reborn 시장에 제품을 판매할 벤더를 모집한다는 글이 업로드됐다. Dark0de는 이때부터 본격적으로 사이버 범죄 마켓 운영을 다시 시작한 것으로 확인됐는데, 기존 포럼을 운영하던 운영자인지 또는 새로운 운영자인지는 확인되지 않은 것으로 알려졌다. 더욱이 DARKODE 내에 관련 키워드 검색 시 의미 있는 결과가 발견되지 않아 해당 커뮤니티와의 관련성은 그리 크지 않다는 분석이다.

BGP Hijacking 공격의 국내외 사례는?


BGP Hijacking 기법을 악용한 공격 사례는 그리 많지 않다. 그 가운데서 해외의 경우에는 2014년 8월 발생한 마이닝 풀 서버 하이재킹 사건과 2018년 4월 발생한 마이이더월렛 해킹사고가 대표적이다.

특히, 마이이더월렛 해킹 사고는 2018년 4월 25일 오전 11시부터 오후 1시 사이 이더리움을 보관하는 지갑인 마이이더월렛이 해킹 당한 사고로, 공격자는 myetherwallet.com와 똑같은 사이트를 제작한 후, ISP 업체인 eNET을 대상으로 BGP Hijacking을 시도해 마이이더월렛에서 사용하는 Amazon의 Route53이라는 DNS 웹 서비스로 가는 트래픽을 시카고의 다른 DNS 서비스로 리다이렉트해 피싱 사이트로 연결시켰다. 이로 인해 사용자들이 공격자가 만들어 둔 피싱 사이트에서 로그인하게 되면 계정 정보가 공격자의 서버로 전송됐으며, 공격자는 수집한 로그인 정보로 약 15만 달러의 이더리움을 탈취했다.

국내의 경우 BGP Hijacking 관련 공격 사례는 이번 클레이스왑 해킹 이슈가 유일하다고 볼 수 있다. 이 외에 2021년 10월에 일어난 K사 장애 사고로, 당시 라우팅 설정 명령 과정에서 K사 내부 네트워크 경로 구성 프로토콜인 IS-IS를 마무리하는 처리 과정에서 exit 명령어를 미처리해 BGP 프로토콜로 처리되어야 할 데이터가 IS-IS 프로토콜로 처리되어 발생한 사건이 있다. 해당 사건의 경우 의도된 공격이 아닌 작업자의 실수로 인해 발생된 사건이지만, 큰 틀에서 BGP Hijacking 이슈로 볼 수도 있다는 얘기다.

BGP Hijacking 공격기법의 대응방안은?


BGP Hijacking 공격으로 인해 피해를 사전에 예방하거나 최소화할 수 있는 방법으로는 모니터링과 IP Prefix Filtering, 그리고 RPKI가 있다는 게 S2W의 설명이다. 첫 번째 모니터링의 경우 통신망의 동일 프로토콜 계층에서 대등한 지위로 동작하는 Peer 중 IP Prefix의 대역에 맞지 않는 IP Prefix를 통보(announcement)받아 네트워크에 딜레이나 이상이 생기는지 확인하는 방법과 특정 시간대에 갑자기 양방향 또는 응답 패킷의 양이 현저히 적어지거나 잘못 연결되어 리다이렉트되는 트래픽이 있는지 주기적으로 모니터링하는 방법이 있다.

두 번째로 불법적인 경로 생성을 막기 위해 IP Prefix Filtering 사용하는 방법으로, 특정 IP Prefix만 허용하는 화이트리스트를 생성해 새로운 경로 생성을 위한 통보를 차단하는 방법이다.

마지막으로 언급된 RPKI(Resource Public Key Infrastructure)는 AS Number와 IP Prefix 등의 인터넷주소 자원에 대해 PKI 표준 기반을 사용해 해당 라우팅 정보의 무결성을 보장하는 인증서를 발행하는 기술을 의미한다.

RPKI를 지원 방식에는 각 주소 관리 기관에서 각각의 인증서버(CA)를 구축해서 리소스 및 ROA 인증서를 관리하는 위임(Delegation) 방식과 대륙별 인터넷주소 관리기구(RIR: Regional Internet Registry)에서 RPKI 시스템을 구축하고 소속된 하위 인터넷주소 관리기구에서 이 시스템에 접근하는 방식인 통합(Hosted) 방식이 존재한다. 이러한 RPKI를 통해 비정상 경로를 탐지하는 동작이 구현될 수 있다. RPKI 시스템을 통해 BGP Peer에 대한 통보가 신뢰성이 있는지 검증함으로써 비정상 경로를 사전에 탐지 및 차단할 수 있다는 얘기다.

이번 클레이스왑 사건과 관련해 상세 분석 보고서를 발표한 S2W 측은 “BGP 프로토콜의 취약점을 이용한 BGP Hijacking이라는 공격의 위험성에 대해서 해외에서는 이미 인지가 되어 있고 그에 대한 대비도 비교적 잘 갖추어져 있지만, 아직 국내는 사실상 이러한 공격에 대한 대비가 미흡한 실정”이라며, “특히, 보안에 대한 투자가 잘 이뤄지고 있는 조직이더라도 고려하기 쉽지 않은 AS 악용으로 인한 네트워크 경로 변경이기 때문에 대비가 쉽지 않다”고 우려했다. 이어 “이번 클레이스왑 사례처럼 BGP Hijacking 공격이 국내에도 실제로 발생했고, 이 같은 사실은 전 세계 공격자들에게 알려져 추후 동일한 공격자 또는 다른 공격자에 의해 재발될 가능성이 높다”며, “이에 일반 기업과 ISP 및 서버 호스팅 업체들은 이번 사건의 위험성을 인지하고, 재발 방지를 위한 협업 및 논의가 필요할 것으로 보인다”고 강조했다.


[출처 : 보안뉴스]
https://www.boannews.com/media/view.asp?idx=104743