1. 개요
- 2021.03.28 PHP의 Git 서버(git.php.net)에 백도어를 심어 PHP 개발자들이 악성 서비스 및 앱을 개발하도록 유도
- 감염된 코드로 웹 사이트를 만들었다면, 공격자들은 백도어를 통해 침투 및 임의의 명령을 실행 가능
- 재빨리 발견되어 조치가 취해짐 > 정상적인 코드로 롤백
- git.php.net 서버 폐기 후 GitHub 저장소로 프로젝트를 이전 조치
2. 공급망 공격 (Value-Chain Attack)
- 서드파티 공격(Third Party Attack) 공격이라고도 불림
- 유통 및 공급 과정을 이용한 공격 유형
- 자사의 시스템 및 데이터에 접속할 수 있는 외부 협력업체나 공급업체를 통해 누군가가 시스템에 침투할 때 발생
- 자체적으로 새로운 기술을 개발하지 않고 오픈 소스나 아웃 소싱, 또는 프리랜서 등을 통해 만들어진 소프트웨어를 사용하는 추세
- 만약, 만들어진 소프트웨어 등이 감염된 리소스를 통해 개발이 되었고, 이에 대한 적절성, 무결성 확인 없이 배포할 경우 악성코드가 존재한 상태로 사용자들에게 배포
- 공격이 시작되기 전 감염 사실을 알기 어렵고, 일시에 대규모의 사용자가 동시에 피해를 볼 수 있는 특징이 있음
2.1 공격 흐름
① 해커는 먼저 공급 업체의 시스템을 장악한 후, 인증서를 탈취하거나 코드 패치, 업데이트 모듈 위장 등의 방식으로 악성코드를 업로드
② 악성코드는 정상 파일로 위장되어 배포되고, 이를 내려받은 다수의 사용자와 서버가 악성코드에 감염
③ 해커는 해당 서버들을 거점으로 이용해 공격 영역을 확대
3. 분석
- php-src 리포지터리에 두 개의 악성 커밋(commit)이 삽입
- PHP 개발자 니키타 포포브(Nikita Popov)와 라스무스 레르도프(Rasmus Lerdorf)의 이름을 도용해 유포
- 타이포그래피 에러 수정을 위한 것처럼 위장되어 배포되었으나, 백도어 기능이 포함된 악성 코드
- [사진 1]은 악성코드(백도어)를 포함하여 유포된 zlib.c의 일부
- User-Agent 헤더의 값이 zerodium 문자열이 있는 경우 해당 값을 그대로 PHP를 통해 실행
- zend_eval_string()는 PHP 코드를 그대로 실행시키는 함수
4. 대응방안
4.1 서버측 대응
① PHP Git 서버에서 받은 소스 중 zerodium 존재 여부 확인
4.2 네트워크측 대응
① User-Agent 헤더 값이 zerodium인 경우 탐지
- 해당 백도어는 User-Agent 헤더의 값이 zerodium 문자열이 있는 경우 PHP 코드를 실행
alert tcp any any -> any any (msg:"Zerodium Backdoor"; flow:established; pcre:"/User-Agent\:[^\n]+zerodium/i";)
5. 참고
https://news-web.php.net/php.internals/113838
'악성코드 > 분석' 카테고리의 다른 글
제로클릭(Zero-Click) (0) | 2023.02.20 |
---|---|
악성코드와 레지스트리 (1) | 2023.01.08 |
Gh0st RAT(Remote Access Trojan) (0) | 2022.11.28 |
C2aaS(C2-as-a-Service) (0) | 2022.11.19 |
IoT Mirai 악성코드 분석 (0) | 2022.11.11 |