2025년 04월 30일
자고 일어나니 프론트 접속이 안된다하여 로그를 분석해보았는데 다양한 취약점 공격시도가 있었다.
여러가지 취약점 공격 중 하나씩 알아보자.
195.170.172.128 - - [29/Apr/2025:18:07:41 +0000] "{\x22id\x22:1,\x22jsonrpc\x22:\x222.0\x22,\x22method\x22:\x22login\x22,\x22params\x22:{\x22login\x22:\x22422RzCUkhaJDunRGhZefuo2MdqZawaHNX7EZQfMWoEraPeXfrgZ8KJxHXFzKufRCvmWwh2Y2WAgtHdiZLq6pkRwE1tGAfL1\x22,\x22pass\x22:\x22x\x22,\x22agent\x22:\x22XMRig/6.15.3 (Windows NT 10.0; Win64; x64) libuv/1.42.0 msvc/2019\x22,\x22algo\x22:[\x22cn/1\x22,\x22cn/2\x22,\x22cn/r\x22,\x22cn/fast\x22,\x22cn/half\x22,\x22cn/xao\x22,\x22cn/rto\x22,\x22cn/rwz\x22,\x22cn/zls\x22,\x22cn/double\x22,\x22cn/ccx\x22,\x22cn-lite/1\x22,\x22cn-heavy/0\x22,\x22cn-heavy/tube\x22,\x22cn-heavy/xhv\x22,\x22cn-pico\x22,\x22cn-pico/tlo\x22,\x22cn/upx2\x22,\x22rx/0\x22,\x22rx/wow\x22,\x22rx/arq\x22,\x22rx/graft\x22,\x22rx/sfx\x22,\x22rx/keva\x22,\x22argon2/chukwa\x22,\x22argon2/chukwav2\x22,\x22argon2/ninja\x22,\x22astrobwt\x22]}}" 400 157 "-" "-" "-"
Agent가 XMRig
인데 XMRig
를 검색해보니 Monero 등의 암호화폐를 채굴하는 봇이라고 한다.
남의 CPU 긁어서 채굴 할 생각이었나 보다.
채굴 봇이 JSON-RPC
형태로 로그인 시도를 한 것 같은데, 내 서버는 Nginx
이므로 JSON-RPC
형태를 직접적으로 지원하지 않아서 400이 반환되어 차단되었다.
195.170.172.128 - 1JTsMyn4yizbEWCDqeuedShvC9CRjj4ByS [29/Apr/2025:18:07:51 +0000] "POST / HTTP/1.1" 405 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" "-"
195.170.172.128 - 0x595e533b5109fd578c0078372535dbbabaa7e9ea [29/Apr/2025:18:07:56 +0000] "POST / HTTP/1.1" 405 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" "-"
그리고 로그인 시도 이후 이상한 문자열을 / 경로에 Post 요청을 보냈는데.. 아마 로그인 성공 이후 필요한 암호화폐 관련 데이터
이지 않을까 싶다. / 경로는 GET 요청만 매핑되어있기 때문에 POST 요청은 405로 차단되었다.
195.170.172.128 - - [29/Apr/2025:18:07:59 +0000] "GET /WuEL HTTP/1.1" 200 703 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; ; NCLIENT50_AAPCDA5841E333)" "-"
195.170.172.128 - - [29/Apr/2025:18:08:06 +0000] "GET stager64 HTTP/1.1" 400 157 "-" "-" "-"
195.170.172.128 - - [29/Apr/2025:18:08:09 +0000] "GET /a HTTP/1.1" 200 703 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" "-"
195.170.172.128 - - [29/Apr/2025:18:08:14 +0000] "GET /download/file.ext HTTP/1.1" 200 703 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" "-"
195.170.172.128 - - [29/Apr/2025:18:08:18 +0000] "GET /SiteLoader HTTP/1.1" 200 703 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" "-"
195.170.172.128 - - [29/Apr/2025:18:08:23 +0000] "GET /mPlayer HTTP/1.1" 200 703 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" "-"
그리고 이후 이상한 경로로 몇번의 요청도 보내었다.
2025/04/29 18:08:27 [error] 32#32: *54 client intended to send too large body: 10485761 bytes, client: 195.170.172.128, server: 내 서버 IP, request: "POST / HTTP/1.1", host: "내 서버 IP"
195.170.172.128 - - [29/Apr/2025:18:08:32 +0000] "POST / HTTP/1.1" 413 585 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" "-"
그리고 이후 10MB가 넘는 Body를 포함한 Post 요청을 보내었고 Nginx가 413 Payload Too Large를 반환하면서 차단되었다.
45.86.211.65 - - [29/Apr/2025:18:14:02 +0000] "GET //wp-includes/ID3/license.txt HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:09 +0000] "GET //xmlrpc.php?rsd HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:12 +0000] "GET //blog/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:15 +0000] "GET //web/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:18 +0000] "GET //wordpress/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:21 +0000] "GET //wp/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:24 +0000] "GET //2020/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:27 +0000] "GET //2019/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:30 +0000] "GET //2021/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:33 +0000] "GET //shop/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:36 +0000] "GET //wp1/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:39 +0000] "GET //test/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:42 +0000] "GET //site/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
45.86.211.65 - - [29/Apr/2025:18:14:45 +0000] "GET //cms/wp-includes/wlwmanifest.xml HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"
워드프레스는 PHP로 만들어진 오픈소스 기반 웹사이트 빌더인데, 전세계 웹사이트의 43.0% 가 워드프레스로 만들어져 있는만큼 점유율도 높다. 워드프레스 특정 버전은 특정 url들에 대해서 RCE 취약점이 있는데 공개된 IP들 중에서 한놈만 걸려라 형식의 봇이 시도하지 않았을까 싶다.
103.207.125.65 - - [29/Apr/2025:18:59:01 +0000] "GET /boaform/admin/formLogin?username=user&psd=user HTTP/1.0" 301 169 "-" "-" "-"
이번에는 /boaform/admin/formLogin?username=user&psd=user
라는 주소로 GET 요청이 들어와있었는데 찾아보니 Netlink GPON Router의 관리자 로그인 Default 경로였다.
만약 내가 Netlinks사의 라우터를 쓰고 있었다면 뚫렸을까 생각했지만 아마 도메인 서비스 회사에서 막았을 것 같다.
162.243.28.182 - - [29/Apr/2025:20:08:16 +0000] "GET /.env HTTP/1.1" 301 169 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-"
162.243.28.182 - - [29/Apr/2025:20:08:17 +0000] "GET /.git/config HTTP/1.1" 301 169 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-"
Keydrop.io/1.0(onlyscans.com/about)
라는 Agent로 env
와 git config
주소에 접근 한 기록이 있는데, 저 방식은 Directory Listing
취약점을 공격한 방식이다. 모든 경로에 대해서 인가 권한을 설정해두지 않는다면, 해당 폴더 구조가 전부 보일 수도 있다.
추가로 onlyscan.com이라는 주소를 들어가보니 서버들을 스캔하면서 밸웨어나 악성 인프라를 탐지하는 회사라고 하는데... 추가적인 정보가 아무것도 없는걸 보아 위장용 사이트인듯 하다.
20.171.26.104 - - [29/Apr/2025:22:16:23 +0000] "GET /developmentserver/metadatauploader HTTP/1.1" 301 169 "-" "Mozilla/5.0 zgrab/0.x" "-"
먼저 Agent에 있는 zgrab은 대규모 포트 스캐닝 도구이다.
CVE 번호 DVE-2025-31324
의 저 공격은 무려 3일전에 기사에도 보도된 최신(?) 공격이다. 무료 위험도인 CVSS 점수도 10점 만점 최고 위험도인...
SPA 넷위버 제품군에 특정 컴포넌트 /developmentserver/metadatauploader
에 대한 취약점이 있어 인증 없이도 JSP 파일들을 업로드 할 수 있는 점을 악용한 방법이었다.
난 SPA 넷위버를 사용 중이 아니었기에 빠져나갔다...
20.65.193.148 - - [29/Apr/2025:22:47:05 +0000] "GET /hudson HTTP/1.1" 301 169 "-" "Mozilla/5.0 zgrab/0.x" "-"
hudson
은 Jenkins
의 예전 이름인데 zgrab
스캐너가 Jenkins
서버를 찾으려 시도했던 것 같다.
132.196.41.74 - - [29/Apr/2025:23:20:39 +0000] "GET /autodiscover/autodiscover.json?@zdi/Powershell HTTP/1.1" 200 703 "-" "Mozilla/5.0 zgrab/0.x" "-"
/autodiscover/autodiscover.json
는 Microsoft Exchange 서버
에서 이메일 클라이언트 자동 설정 시 사용되는 엔드포인트인데, 뒤에 zdi
라는 문자열이 붙어있다.
zdi
는 Zero Day Initiative
라는 보안 시스템 회사인데 진짜 저 회사가 연구 목적으로 탐색을 한 기록인지 봇의 별칭으로 사용한 건지는 확실하게 모르겠다.
대부분의 공격 시도들이 특정 url에 대한 미인증 공격이었는데 사용하는 url을 제외하고 미리 다 막아두어서 걸린건 없어서 다행이다. 보안도 같이 공부해야 할 것 같다는 필요성이...
© 2024-2025.
Heeyeon Lee
all rights reserved.