JDY 봇넷 성장으로 IoT 및 SOHO 취약점의 더 빠른 악용 가능
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
Black Lotus Labs는 대규모 스캔 및 핑거프린팅에 사용되는 1,500개 이상의 손상된 SOHO 및 IoT 장치로 구성된 중국 관련 네트워크 JDY 봇넷의 활동 재개를 확인했습니다. 봇넷은 중앙 집중식 명령 및 제어 시스템에서 지시를 받아 대상 멀티 프로토콜 스캔을 수행한 뒤 운영자가 새로 공개된 취약점을 빠르게 악용할 수 있도록 구조화된 텔레메트리를 반환합니다. 이 인프라는 Tor를 통해 숨겨져 있으며, Platypus라는 오픈 소스 플랫폼을 통해 감염된 장치를 관리합니다. 이 활동은 미국 군사 및 주요 인프라 타겟에 집중되어 있습니다.
조사
조사는 JDY 트래픽을 149.248.3.38에서 호스팅하는 플라티퍼스 서비스와 연결되는 페이로드 서버로 추적했습니다 13339포트를 개방하고 있으며, 아키텍처별 바이너리를 busybox, curl또는 wget을 통해 가져오는 bash 기반 드로퍼가 발견되었습니다. 악성코드 샘플은 명령줄 옵션, 비컨 행위, 암호화된 HTTPS 엔드포인트를 통한 작업 검색 및 SYN 원시 패킷 프로빙과 같은 적응형 스캐닝 방법을 식별하기 위해 분석되었습니다. 이 보고서는 또한 JDY를 이전의 KV 봇넷과 중국 APT 그룹 Volt Typhoon의 활동과 연관시킵니다.
완화
권장되는 방어 조치에는 중국 관련 은밀한 인프라를 대처하는 영국 NCSC 및 CISA 지침을 따르고, 라우터 및 IoT 펌웨어를 강화하며, 장치를 정기적으로 재부팅하고 패치하며, SASE 또는 유사한 제어를 사용하여 외부 노출을 줄이는 것이 포함됩니다. 보안 팀은 또한 익숙하지 않은 IP 주소로의 비정상적인 outbound TLS 세션 및 내부 엣지 장치에서 시작되는 예상치 못한 스캐닝 활동을 모니터링해야 합니다.
응답
JDY 활동이 탐지되면, 영향을 받은 장치를 즉시 격리하고, 식별된 명령 및 제어 IP와 포트에 대한 outbound 트래픽을 차단하며, 악성 바이너리를 제거해야 합니다. 탐지 콘텐츠에는 auditdy 프로세스 이름과 Platypus 서비스가 포함되어야 하며, 동일한 비컨 패턴을 보이는 다른 IoT 장치를 대상으로 하는 광범위한 네트워크 검색이 이어져야 합니다. 그런 다음 펌웨어를 업데이트하고, 이 보고서에서 참고한 Fortinet 장치를 포함해 노출된 취약 제품에 패치를 적용해야 합니다.
"그래프 TB %% 클래스 정의 classDef 기술이론 채우기:#c2e0ff classDef 도구 채우기:#d9d9d9 classDef 프로세스 채우기:#ffeb99 %% 노드 – 기술 입구_도구_전송["<b>기술</b> – <b>T1105 입구 도구 전송</b><br/>wget, curl 또는 busybox를 사용하여 해킹된 장치에 JDY 바이너리를 다운로드합니다."] class 입구_도구_전송 기술 시스템_정보_발견["<b>기술</b> – <b>T1082 시스템 정보 발견</b><br/>OS, 커널 버전, CPU 아키텍처, 가동 시간 및 메모리 정보를 수집합니다."] class 시스템_정보_발견 기술 펌웨어_소프트웨어_수집["<b>기술</b> – <b>T1592.003 펌웨어</b> 및 <b>T1592.002 소프트웨어</b><br/>고유한 probe_id를 계산하기 위해 펌웨어 버전 및 설치된 소프트웨어 세부 정보를 수집합니다."] class 펌웨어_소프트웨어_수집 기술 샌드박스_회피["<b>기술</b> – <b>T1497.001 가상화/샌드박스 회피</b><br/>분석 샌드박스 내 실행을 피하기 위해 환경 검사를 수행합니다."] class 샌드박스_회피 기술 지표_제거["<b>기술</b> – <b>T1070.004 파일 삭제</b><br/>포렌식 증거를 줄이기 위해 페이로드 실행 후 드로퍼 파일을 삭제합니다."] class 지표_제거 기술 인프라_숨기기["<b>기술</b> – <b>T1665 인프라 숨기기</b><br/>Tor 기반 웹 서비스를 사용하여 명령 및 제어 엔드포인트를 숨깁니다."] class 인프라_숨기기 기술 c2_웹_서비스["<b>기술</b> – <b>T1102 웹 서비스</b><br/>숨겨진 Tor 서비스를 통해 HTTP(S)로 C2와 통신합니다."] class c2_웹_서비스 기술 활성_스캔["<b>기술</b> – <b>T1595.002 활성 스캔 – 취약성 스캔</b><br/>고용량 스캔 작업을 수신하고 멀티 프로토콜(TCP SYN, UDP, SSL, ICMP) 스캔을 수행합니다."] class 활성_스캔 기술 네트워크_발견["<b>기술</b> – <b>T1016.001 인터넷 연결 발견</b><br/>개방된 포트를 나열하고, 배너, TLS 인증서 및 서비스 핑거프린트를 수집합니다."] class 네트워크_발견 기술 데이터_아카이빙["<b>기술</b> – <b> T1560 수집된 데이터 아카이빙</b><br/>결과를 압축하고 하드코드된 AES 키로 암호화합니다."] class 데이터_아카이빙 기술 실행_가드레일["<b>기술</b> – <b>T1480.001 환경적 키잉</b><br/>환경별 키를 사용해 페이로드가 의도된 호스트에서만 실행되도록 합니다."] class 실행_가드레일 기술 데이터_유출["<b>기술</b> – <b>T1102 웹 서비스 (데이터 유출)</b><br/>암호화된 스캔 결과를 C2 엔드포인트 ‘/data/v2/pscan’에 게시합니다."] class 데이터_유출 기술 %% 공격 흐름을 보여주는 연결 입구_도구_전송 –>|연결| 시스템_정보_발견 시스템_정보_발견 –>|데이터 제공| 펌웨어_소프트웨어_수집 펌웨어_소프트웨어_수집 –>|피드| 샌드박스_회피 샌드박스_회피 –>|연속성을 허용| 지표_제거 지표_제거 –>|아티팩트 제거 후| 인프라_숨기기 인프라_숨기기 –>|숨겨진 채널 수립| c2_웹_서비스 c2_웹_서비스 –>|스캔 작업 전달| 활성_스캔 활성_스캔 –>|네트워크 데이터 생성| 네트워크_발견 네트워크_발견 –>|데이터 출력| 데이터_아카이빙 데이터_아카이빙 –>|적용| 실행_가드레일 실행_가드레일 –>|페이로드 준비| 데이터_유출 데이터_유출 –>|결과 저장| c2_웹_서비스 %% 스타일링 class 입구_도구_전송,시스템_정보_발견,펌웨어_소프트웨어_수집,샌드박스_회피,지표_제거,인프라_숨기기,c2_웹_서비스,활성_스캔,네트워크_발견,데이터_아카이빙,실행_가드레일,데이터_유출 기술 "
공격 흐름
탐지
의심스러운 chmod 실행이 의심스러운 디렉토리를 가리킴 (cmdline 경유)
보기
표준 도구를 통한 원격 파일 업로드/다운로드 (cmdline 경유)
보기
탐지할 IOCs (HashMd5): 확장된 JDY IoT 및 SOHO 봇넷이 빠른 취약성 악용을 가능하게 함
보기
탐지할 IOCs (SourceIP): 확장된 JDY IoT 및 SOHO 봇넷이 빠른 취약성 악용을 가능하게 함
보기
탐지할 IOCs (DestinationIP): 확장된 JDY IoT 및 SOHO 봇넷이 빠른 취약성 악용을 가능하게 함
보기
CVE-2026-35616 공개 이후 Fortinet 장치에 대한 증가된 스캔 탐지 [방화벽]
보기
알려진 페이로드 서버 및 Tor 노드를 통해 JDY 봇넷 활동 탐지 [Windows 네트워크 연결]
보기
JDY 봇넷 드로퍼 스크립트 탐지 [Linux 프로세스 생성]
보기
시뮬레이션 실행
필수조건: Telemetry & Baseline Pre-Flight 검사가 통과했어야 함.
이론적 근거: 이 섹션에서는 적수의 기술(TTP)을 정확히 실행하여 탐지 규칙을 트리거하는 방법을 설명합니다. 명령 및 내러티브는 식별된 TTP를 직접 반영하고 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다.
-
공격 서사 및 명령:
JDY 운영자는 하드 코딩된 서버에서 다음 단계의 페이로드를 가져오기를 원합니다 (149.248.3.38). C2 채널을 숨기기 위해, 운영자는 Tor 경로 연결도 시도하며, “tor” 정규 표현식이 이를 감지하도록 기대합니다. 해킹된 Windows 호스트에서 공격자는 페이로드 서버에 TCP 소켓을 열고 Tor 실행 파일을 사용하여 (tor.exe) 숨겨진 서비스를 해석하고 연결합니다. 두 액션 모두 방화벽 이벤트를 생성하며, Sigma 규칙을 만족해야 합니다. -
회귀 테스트 스크립트:
# JDY 봇넷 활동 시뮬레이션 – Sigma 규칙을 트리거합니다 # ---------------------------------------------------- # 1. 알려진 페이로드 서버에 대한 직접 연결 $payloadIp = "149.248.3.38" $payloadPort = 80 try { $sock = New-Object System.Net.Sockets.TcpClient($payloadIp, $payloadPort) Write-Output "JDY 페이로드 서버에 연결되었습니다 ($payloadIp:$payloadPort)" $sock.Close() } catch { Write-Error "페이로드 서버에 연결하지 못했습니다: $_" } # 2. Tor 기반 연결 (호스트 이름에 'tor' 포함됨으로 시뮬레이션됨) # tor.exe가 PATH에 있고, TOR SOCKS 프록시가 127.0.0.1:9050에 수신 대기 중이라고 가정 $torDest = "exampletorhiddenservice.onion" $torPort = 443 $torProxy = "127.0.0.1:9050" try { $script = @" $client = New-Object System.Net.Sockets.TcpClient $client.Connect("$torDest", $torPort) "@ # 실제로는 Tor 지원 해석자가 필요합니다; 여기서는 단순히 로깅 가능한 이벤트를 발생시킵니다 Write-Output "TOR 프록시를 통해 $torDest:$torPort에 Tor 연결 시도 중" } catch { Write-Error "TOR 연결 실패: $_" } # 시뮬레이션 종료 – 방화벽은 두 가지 outbound 시도를 기록했어야 함 -
정리 명령:
# 남아있는 연결 또는 임시 파일 제거 Get-NetTCPConnection -RemotePort 80,443 | Where-Object { $_.RemoteAddress -eq "149.248.3.38" } | Remove-NetTCPConnection -Force # (tor.exe가 시작된 경우 중지) Stop-Process -Name "tor" -ErrorAction SilentlyContinue