DDOS 연대기: WordPress 봇의 XMLRPC 공격 처리
게시 됨: 2019-04-08이틀 전에 Nettted Limited라는 고객 웹사이트 중 하나에 어려움을 겪었습니다. 우리는 일반적으로 고객에게 기술 지원을 제공하지 않지만 불행히도 고객의 호스팅 서비스는 고객에게 어떠한 지원도 제공하지 않습니다. 그녀를 도와야 한다는 책임감을 느꼈기 때문에 봇넷 공격에 대응 하기로 결정했습니다. 우리는 공격하는 동안 봇의 이상한 행동에 직면했습니다. 나는 이 페이지에서 매시간 무슨 일이 일어났는지, 그리고 우리가 고객의 웹사이트를 보호하기 위해 어떤 조치를 취했는지 언급할 것입니다.
DDOS 공격의 시작: 공격자는 자신을 식별합니다.
저는 Nettsted Limited의 소유주로서 고객을 지원하기 위해 하루에 16-18시간 일하고 있습니다. 우리는 전 세계의 다른 고객을 가지고 있으므로 다른 시간대에 깨어 있어야 합니다. 몇 달 후, 나는 먼저 영화를 보고 싶었고 가족들과 즐거운 시간을 보냈습니다. 불행히도 이것은 내 경력의 최악의 날 중 하나였습니다. 영화를 본 후 우리는 휴식을 취하기로 했다. 그러나 보이지 않는 것이 나를 찌르며 "야! 당신은 당신의 작품을 보고 자야 합니다.” 그리고 예... 다음은 직장에서 5시간 동안 결근한 동안 일어난 일입니다.
- 내 고객 중 한 명이 SEO 플러그인을 제거하고 웹사이트의 모든 설명과 제목을 삭제했습니다. 그는 또한 웹사이트의 링크 구조를 깨뜨렸습니다.
- 다른 클라이언트는 우리가 설치한 SEO와 관련된 일부 플러그인을 제거했습니다. 캐시 설정을 변경하고 어떻게 든 모든 .js 및 .css 파일이 손상되었습니다.
- 제 고객 중 한 명이 DDOS 공격을 받고 있었고 그녀는 웹사이트가 어떻게 무너지는지 지켜보고 있었습니다.
WhatsApp과 Skype에 가입했을 때, 나는 그 5시간 동안 많은 불만을 보았습니다. 문장의 30%는 "어디세요?!"였습니다.
내 고객이 WhatsApp을 통해 메시지를 받았다고 말했습니다. 공격자는 전화번호로 자신을 식별하고 내 고객에게 자신을 공격할 것이라고 말했습니다. 정말 바보같이 들리지만 그는 정말 그랬습니다... 제가 일하러 돌아왔을 때 이미 공격이 시작되었습니다.
1일차-) 공격에 대한 첫 번째 조치 취하기
다음은 우리가 얻은 공격의 일부 로그입니다.
103.9.156.249 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.1; ; verifying pingback from 93.174.93.163"
199.223.214.148 - - [07/Apr/2019:01:19:03 +0100] "GET / HTTP/1.0" 200 13194 "-" "WordPress/3.3.1; http://www.mentalic.gr"
216.240.176.141 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.0;
104.236.33.158 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.1; http://pmsearchpartners.com; verifying pingback from 93.174.93.163"
149.210.236.96 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/3.9.27; http://imageconsultant.mu/; verifying pingback from 149.210.236.96"
185.87.249.33 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1;
158.69.26.84 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/3.9.2; http://teensystudios.com; verifying pingback from 93.174.93.163"
103.233.76.243 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.26; http://help.worldmart.in; verifying pingback from 93.174.93.163"
203.175.180.254 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.1; http://www.cybertechriskcenter.com; verifying pingback from 93.174.93.163"
199.223.214.148 - - [07/Apr/2019:01:19:03 +0100] "GET / HTTP/1.0" 200 13194 "-" "WordPress/3.3.1; http://www.mentalic.gr"
68.71.60.249 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.26; http://www.itunesalternative.org; verifying pingback from 93.174.93.163"
66.55.132.6 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/3.8.16;
163.172.103.45 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-"

로그에서 공격이 WordPress 사용자 에이전트에서 온 것임을 알 수 있습니다. 그러나 이러한 공격 중 일부는 에이전트 없이도 발생했습니다. 내가 추천한 모든 웹사이트를 확인했는데 모두 구식이고 버려진 웹사이트였습니다. 모든 로그에서 거의 동일한 IP가 1개 있고 다른 2개가 있습니다. 93.174.93.163은 네덜란드 IP였지만 우리를 향한 봇넷 공격을 준비하고 있던 서버/호스팅이라고 생각합니다. 다른 2개의 IP도 네덜란드 IP였습니다.
공격에 대한 "핑백 확인" 알림이 너무 많기 때문에 공격에 pingbacks 및 xmlrpc.php를 사용하고 있다고 생각했습니다.
공격 에 대한 나의 첫 번째 반응은 xmlrpc.php의 이름을 변경한 다음 아예 제거하고 WordPress 설정에서 핑백을 제거하는 것이었습니다 .
결과 : 공격 속도를 늦추지 않았습니다.
첫 번째 움직임에서 좋은 결과를 얻지 못했기 때문에 파일에서 WordPress의 xmlrpc.php 파일을 제거하기로 결정했습니다. 그러나 그것은 여전히 도움이되지 않았습니다.
그러나 일종의 DDOS 공격에 도움이 되는 것으로 입증되었습니다. 당신도 그것에 직면하고 있다면 시도해 볼 수도 있습니다.
1일차-) 첫 번째 응답: 현지의 이점을 활용하십시오.
이제 내가 왜 Cloudflare를 사용하지 않았는지 알려줄 것입니다. CF는 설정하는 데 시간이 걸리고 이름 서버 변경은 때때로 정말 고통스러울 수 있습니다. 그래서 공격 속도를 늦추고 싶었지만 웹사이트용 Cloudflare도 설정했습니다. 네임서버를 변경했습니다. 공격은 심각했고 I/O 사용, 대역폭 등 심각한 피해를 입었다. 2~3명이 서로 다른 서버에서 공격을 가했던 것 같아요. 내 고객의 웹사이트는 매일 1000$를 벌고 있었고 그것은 그에게 심각한 문제였습니다. 사이트는 약 6시간 동안 다운되었습니다.
사이트가 로컬이었기 때문에 htaccess를 설정하기로 결정했습니다. 덴마크의 모든 IP 주소가 필요했습니다. 웹사이트의 도움으로 모든 덴마크 IP를 찾을 수 있습니다. 나는 모든 외국 트래픽에 대해 웹 사이트를 일시적으로 닫을 것입니다. 나는 htaccess 파일을 만들고 웹사이트에 대한 모든 외부 트래픽을 차단했습니다 .
결과 : 일시적으로 좋은 결과입니다. 모든 악성 봇은 현재 403페이지에 도달했습니다. 그러나 나쁜 소식. Google 봇도 403을 기록했습니다. 봇 트래픽은 주로 미국에서 유입되기 때문에 미국이나 구글 봇 IP는 따로 설정하지 않았습니다. 이것은 네임서버가 변경될 때까지 일시적인 것이기 때문에 문제가 되지 않았습니다.
전체 과정에서 나는 전화로 내 고객과 이야기하고 그녀를 진정시켰습니다. 그녀는 그 상황 때문에 상당히 화를 내고 속상해했습니다. 그녀는 공격자로부터 메시지를 받았다고 말했습니다. 그녀는 그의 전화번호를 가지고 있었다!
1일차-) 네임서버 변경 및 Cloudflare 설정 문제
htaccess를 설정하고 약 2시간 후에 네임서버가 변경되고 Cloudflare를 활성화했습니다. .htaccess 파일에서 거부/허용 규칙을 제거했습니다. 그러나 Cloudflare의 WAF 설정에 문제가 있었습니다. 나는 내 클라이언트에게 서버 IP를 변경 하도록 요청했고 그녀는 그렇게 했습니다. 언젠가는 오래된 IP 정보가 여전히 존재하기 때문에 Cloudflare의 DNS 레코드를 변경할 것입니다. 그러나 IP를 구입한 직후에 하면 사이트가 다시 다운됩니다. "Under Attack Mode"는 이미 웹 사이트에서 활성화 되었습니다.
결과 : Cloudflare를 활성화한 후 모든 공격이 중지되었습니다.
6~7시간의 설렘 끝에 나는 의자에서 일어나 잠이 들었다. 우리는 우리가 이겼다고 생각했지만 아직 끝나지 않았습니다.
2일차-) 그가 돌아왔다! Botnet으로 Cloudflare로 우회!
아침에 IP를 변경했는데 사이트가 안전하다고 생각해서 공격모드에서 미디엄으로 변경했습니다. .haccess에서 몇 가지 다른 사항을 변경했습니다. 고객을 위해 PRO Cloudflare를 구입했습니다. 웹 사이트를 더 안전하게 만들기 위해 일부 WAF 설정을 구성합니다. 그러나 얼마 후 그는 더 심각한 공격으로 돌아올 수 있었고 심각한 양의 공격이 원점을 공격했습니다. 그는 Cloudflare를 우회하고 있었습니다.
Cloudflare의 일부 WAF 설정은 WordPress 봇 공격, XMLRPC 공격의 중지를 약속했지만 . Cloudflare에서 모든 WAF 설정 을 기본값으로 설정하기로 결정했습니다.
결과 : 사용자 에이전트가 없는 모든 봇 공격은 403에 도달하기 시작합니다.
그 결과 한동안 웹 사이트에 안도감을 주었고 서버가 다시 한 번 가동되었습니다. 그러나 우리는 너무 많은 공격을 받고 있었고 그것은 그것에 가깝습니다.
2일차-) Cloudflare에서 국가 차단
마지막으로 이러한 공격을 없애기 위해 Cloudflare에 더 많은 투자를 해야 한다고 생각했습니다. 마지막 변경 사항으로 위협을 거의 50% 제거했습니다. 그러나 아직 50%가 더 있었다. 지역 웹사이트의 경우 국가 차단은 문제가 되지 않습니다. 또한 봇 트래픽의 50%를 수정했기 때문에 미국의 공격은 우리에게 심각한 문제가 되지 않을 것입니다. Cloudflare enterprise를 구입하고 미국과 덴마크를 제외한 모든 해외 트래픽을 차단했습니다 .
결과 : 봇넷 트래픽의 90%를 수정했습니다.
3일차-) 복수는 차가운 음식에 가장 잘 어울리는 요리입니다.
우리 서버는 봇넷 트래픽의 90%를 처리할 수 있었습니다. 그래도 공격을 멈추지 않았습니다. 그런 다음 WordPress에서 흥미로운 플러그인을 찾았습니다. 그러나 먼저 테스트해야했습니다. 그렇지 않으면 웹 사이트가 다운될 수 있으며 이는 모든 것을 망칠 것입니다. 나는 프로그래머 친구에게 내 웹사이트 중 하나를 공격하도록 요청했습니다. 그것은 완벽하게 작동했습니다. 그런 다음 공격자에 대해 조사합니다. 나는 그가 누구이며 왜 우리를 공격하는지 이해합니다.
나는 먼저 공격자에게 연락했다. 나는 그에게 그의 공격을 멈추라고 요청했다. 그러나 그는 많은 모욕과 욕으로 나에게 대답했다. 방금 WhatsApp에서 그를 차단했고 응답조차 하지 않았습니다. 내 고객이 이 서비스에 대해 더 많은 비용을 지불하도록 요청했지만 거부했습니다. 자랑스럽게 여기고 있었습니다. 나는 내 클라이언트의 권한을 요청하고 공격 모드를 제거했습니다. 플러그인을 설정했습니다.
나는 그의 더럽고 피비린내 나는 사악한 봇을 그의 웹사이트로 다시 보내기 시작했습니다. 그의 웹사이트는 내 눈앞에서 무너졌다. 내가 느낀 것은 Baelor's Sept의 파괴를 지켜보고 있는 Cersei와 동일했습니다. 그런 다음 나는 그들에게 그의 다른 웹사이트를 보내고 다른 웹사이트를 보내고 다른 웹사이트를 보냈습니다. 그들이 공격을 막았을 때 시스템이 멈추고 있었습니다. 그러나 봇을 공격하기 시작했을 때 모든 웹사이트로 리디렉션되었습니다.