제가 정교한 워드프레스 모바일 리다이렉션 멀웨어에서 어떻게 회복했는지 공유해볼게요
다른 분께 도움이 될까 해서 공유해볼게요. 온라인에서 유용한 정보를 거의 찾지 못해서 며칠 동안 고민했어요.結局 시도한 보안이나 악성코드 제거 플러그인들 중 실제로 문제를 해결해 준 게 하나도 없었어요.
**개요**
이건 모바일 전용으로 정교하게 만든 워드프레스 리다이렉트 멀웨어예요. 방문자를 스팸 사이트로 보내는 악성 코드가 있거든요. 이 코드는 User-Agent 문자열을見て 모바일 브라우저를 감지하고, 관리자들(보통 데스크톱에서 사이트를 확인하죠)이 알아채지 못하도록 모바일 방문자만 리다이렉트해요. 처음엔 일반적인 워드프레스 감염인 줄 알았는데, 실제로는 훨씬 심각했더라고요.
**감염 경로**
파일을 뒤지다 보니 wp-config.php에 악성 코드가 주입돼 있었어요. 이 코드는 Base64로 인코딩된 페이로드를 eval(base64_decode(...)) 형태로 가지고 있었죠.
디코딩해 보니 다음과 같은 기능을 했어요.
- 방문자가 모바일 기기를 사용하는지 확인
- 모바일 사용자만 스팸 사이트로 리다이렉트
- 외부 도메인에서 숨은 스크립트 주입
- 관리자, CLI, API 요청은 건너뛰어 감지 피하기
두 사이트 모두 wp-config.php 최상단에まったく 동일한 페이로드가 동일한 페이로드가 주입돼 있었어요. davvero 짜증나는 건, 파일을 깔끔히 정리해도 몇 시간 안에 다시 감염이 되돌아왔다는 점이에요.
조사 중에 다음과 같은 걸 발견했어요.
- sys_ 라는 이름 패턴을 쓰는 백도어 관리자 계정과 [email protected] 같은 이메일
- 변경 불가능 플래그가 설정된 백도어 SSH authorized_keys → 공격자가 파일을 삭제하지 못하도록 잠궜고, 당시 루트 수준의 서버 접근 권한을 가졌음을 의미해요(워드프레스만 접근한 게 아니에요)
- 또한 몇 가지 가짜 플러그인도 찾았는데,こいつらはこんな 행동을 했어요.
- wp-content/mu-plugins/에 01-mu-*.php 파일로 자신을 복사 (자동 로딩, 대시보드에서 삭제 불가)
- 페이지 로드마다 wp-config.php를 다시 주입
- 숨은 sys_ 관리자 계정을 자동 생성
- 원격 서버로 credentials 유출
- 몇 달 전부터 설치돼 있었음
사이트를 정리할 때마다 이 플러그인들이 semplicemente everything을 되돌려놨어요.
페이로드를 더 디코딩해 보니 악성 스크립트 주입도 발견했어요. 바로 ak.akam60800.net이라는 가짜 도메인인데, Akamai CDN을 가장해서 프론트엔드 페이지 방문마다 스크립트를 주입해 방문자를 리다이렉트하거나 감염시키더라고요.
**systemd 서비스 조사**
악성 시스템드 서비스를 확인해 보니 두 가지가 눈에 띄었어요.
- defunct.service → “D-Bus System Connection Bus”라고 설명돼 있지만 실제 D-Bus 서비스는 dbus.service예요. 즉, D-Bus를 가장한 악성 서비스였던 거죠.
- rc-local.service → 부팅 시 /etc/rc.local을 실행하는 clássic 지속점이에요.
추가 조사 결과 defunct.service가 바로 멀웨어의 지속 엔진이었어요. /lib/systemd/system/defunct.dat에 숨은 바이너리를 постоянно 실행하고 5분마다 재시작하면서 wp-config.php를 opnieuw 주입했더라고요.
서비스 파일과 dat 파일을 자세히 살펴보니 결정적인 증거가 나왔어요.
- /usr/bin/defunct — 멀웨어 바이너리, [raid5wq]이라는 가짜 커널 스레드 이름으로 위장
- /lib/systemd/system/defunct.dat — 해당 바이너리의 설정/키 파일
dat 파일과 바이너리를 분석해 보니 컴파일된 ELF 바이너리였어요. 정교한 멀웨어로, 크립토마이너 혹은 봇넷 에이전트가 [raid5wq]이라는 가짜 커널 프로세스로 가장해 actif하게 공격자가 유지 관리하고 있었더라고요.
**근본 원인**
악성 systemd 서비스인 defunct.service가 숨은 ELF 바이너리(/usr/bin/defunct)를 [raid5wq]라는 가짜 커널 스레드 이름으로 위장해서 실행하고 있었어요. 이 바이너리는 지속적으로 가짜 Akamai 스크립트(ak.akam60800.net)를 두 wp-config.php 파일에 주입해서 방문자를 리다이렉트하거나 감염시키고, 5분마다 재시작을 반복하면서 감염을 유지했죠.