보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
VPNFilter 악성코드 분석 보고서
2018.08.03
10,770
1. 개요
가정 및 소규모 오피스용 라우터, 스토리지 장비를 감염시켜 사이버 공격에 활용하는 ‘VPNFilter’ 악성코드가 발견되어 사용자들의 주의가 필요하다.
2. 내용
ㆍ 전 세계 50만 대의 네트워킹 장비를 공격한 신종 VPNFilter 악성코드가 확산되고 있음
ㆍ QNAP NAS(Network-Attached Storage) 장비 외에, SOHO(Small Office/Home Office) 분야의 Linksys, MikroTik, NETGEAR,
TP-Link 등 네트워킹 장비들이 공격을 받음
ㆍ VPNFilter 악성코드는 감염된 장비를 무력화시키고, 시스템에서 단독으로 명령어 실행이 가능하여, 대규모의 공격 및 다양한 유형의
공격도 가능함
ㆍ 해당 공격은 러시아 정부의 후원을 받거나 연루된 전문 해커의 소행으로 추정
1) 특징
ㆍ VPNFilter 악성코드는 시스템 정보 수집 및 효과적인 사이버 공격의 다단계 모듈식 플랫폼이다.
단 계 |
내 용 |
1단계 |
•재부팅을 하여도 후크(hook)가
소멸되지 않아 지속적인 공격이 가능
•2단계 멀웨어를 지원할 C&C 서버를
찾고, 감염된
장비에 2단계 멀웨어를 다운로드하여 지속성을
유지함
|
2단계 |
•파일 수집, 명령 실행, 데이터
유출 등 일반적인 정보 수집 기능 수행
•일부의 경우 장비 펌웨어의 중요
부분을 덮어쓰고 장비를 무력화 시키는 기능 겸비
|
3단계 (플러그인) |
•2단계 멀웨어의 추가 기능을 지원
•TOR:C&C와 통신하기 위한
플러그인
•ssler:웹 크리덴셜 탈취용 패킷 스니퍼 플러그인
•ps : 네트워크 패킷 스니핑 및 트래픽을 감지하는
플러그인
•dstr : 기기의 펌웨어 파일을 덮어쓰기 위한 플러그인
|
[표 1] VPNFilter 악성코드
2) 공격 기법
[그림 1] VPNfilter infrastructure - 출처 : Cisco Talos
① STAGE1 페이로드가 실행되면 이미지 다운로드 사이트인 Photobucket.com에 접속하여 특정 이미지 파일(EXIF 포맷)
다운로드 시도.
② 다운로드 된 EXIF 포맷의 이미지의 GPS 정보를 분석하여 C&C IP 주소 결정.
③ ①단계 실패 시, toknowall.com 사이트에서 ①단계와 동일하게 특정 이미지 파일(EXIF 포맷) 다운로드 시도. 다운로드
성공 시 ②단계 실행.
④ ①, ③단계 모두 실패 시, 리스너를 생성하고 공격자와 STAGE1 페이로드를 연결하도록 하는 특정 트리거 패킷을 대기,
트리거 패킷 탐지 시 C&C IP 주소 결정.
⑤ STAGE2 페이로드가 실행되면 파일 수집, 명령 실행, 데이터 유출 등 일반적인 정보 수집 및 kill, exec 명령으로 장비의
전체 또는 일부를 물리적으로 마비시키는 공격 수행 가능
3) 행위 분석
① STAGE1 상세 분석
STAGE1 페이로드 실행 시 [그림 2]와 같이 감염된 시스템에 존재하는 crontab 파일에 STAGE1 페이로드에 대한 실행파일을 등록하여 부팅 시에 자동 실행
[그림 2] crontab 등록
이후 암호화 통신을 수행하기 위해 아래와 같은 3개의 인증 관련 파일 생성함
▶ client_ca.crt
▶ client.crt
▶ client.key
[그림 3] 암호화 통신 인증서 생성
[그림 4]와 같이 감염된 시스템에서 실행되는 STAGE1 페이로드의 버전 정보를 기록할 msvf.pid 파일 생성
[그림 4] STAGE1 페이로드의 버전 정보 생성
도메인 주소를 활용하기 위해 시스템의 DNS 주소를 1차적으로 /etc/resolv.conf 파일에서 검색함
[그림 5] / etc / resolv.conf 파일의 DNS 주소 검색
/ etc / resolv.conf 파일을 사용할 수 없을 경우, 페이로드 내에 하드 코딩 된 DNS 주소 사용함
[그림 6] 하드 코딩 된 DNS 주소 사용
앞서 결정된 DNS 주소를 가지고 photobucket.com 또는 toknowall.com URL 페이지에서 EXIF 포맷의 이미지 파일 다운로드 시도함
[그림 7] URL 페이지 다운로드
이미지 파일 다운로드 성공 시, EXIF 파일 포맷 검사함
[그림 8] EXIF 파일 포맷 검사
EXIF 포맷의 이미지일 경우, 메타 정보의 GPS 위도 및 경도를 분석하여 C&C 서버 IP 주소 결정함
[그림 9] C&C 서버 IP 주소 결정
그 다음 STAGE2에서 활용하기 위해 api.ipify.org 페이지 접속 후 시스템의 공인 IP 주소 확인
[그림 10] 시스템의 공인 IP 주소 확인
② STAGE2 상세 분석
STAGE2 페이로드 실행 시 [그림 11]과 같이 복호화 과정을 통해 C&C 서버 접속에 사용할 다수의 프록시 IP 주소들을 결정함
▶ 91.121.109.209
▶ 217.12.202.40
▶ 94.242.222.68
[그림 11] 프록시 IP 주소 결정
추가적으로 [그림 12]와 같이 동일한 복호화 루틴을 통해 다수의 C&C 서버 도메인들을 결정
▶ 6b57dcnonk2edf5a.onion/bin32/update.php
▶ zuh3vcyskd4gipkm.onion/bin32/update.php
▶ tljmmy4vmkqbdof4.onion/bin32/update.php
[그림 12] C&C 서버 도메인 결정
모듈 디렉터리(STAGE2m) 및 작업 디렉터리(STAGE2w) 생성
[그림 13] 디렉터리 생성
C&C 서버 접속 시 Request 패킷에 사용할 JSON 객체 생성
▶ {uq : px(시스템의 MAC 주소)}
▶{pv : 빌드 ID}
▶{ad : 시스템의 공인 IP 주소}
▶{bv : STAGE2 페이로드 버전/STAGE1 페이로드 버전}
▶{nn : Base64 Encoded 시스템 이름}
▶{tn : Tor 플래그}
▶{on : C&C 서버 도메인 수}
[그림 14] JSON 객체 생성
생성한 JSON 객체를 가지고 C&C 서버 접속에 대한 접속 시도
[그림 15] C&C 서버 접속 시도
분석할 당시 프록시 서버 중단으로 인해 아래 [그림 16]과 같이 C&C 서버로의 접속이 불가함
[그림 16] 프록시 서버 중단
③ STAGE3 상세 분석
STAGE3 페이로드 실행 시 [그림 17]과 같이 9050/TCP 포트를 점유하는 리스너 생성
[그림 17] 9050/TCP 포트 리스너 생성
STAGE3 페이로드 내부에 내장된 IP를 이용한 Tor 네트워크 접속
[그림 18] Tor 네트워크 접속
Tor 네트워크 접속 시 사용되는 URL 및 도메인은 아래 [그림 19]에서 확인 가능
▶ 171.25.193.77:443 (tor-exit1-readme.dfri.se)
▶ 212.51.134.123:9001 (212-51-134-123.fiber7.init7.net)
▶ 137.205.124.35:1720 (motmot.csc.warwick.ac.uk)
▶ 208.113.135.162:1443 (cloud.pdtcrew.com)
▶ 79.137.70.137:443 (ns3067003.ip-79-137-70.eu)
[그림 19] Tor 접속 URL
Tor 접속 시 마지막 79.137.70.137(ns3067003.ip-79-137-70.eu) 호스트와의 지속적인 통신 수행
[그림 20] Tor 네트워크 통신
3. C&C 서버 리스트
연번 |
C&C 서버 |
1 |
photobucket.com |
2 |
toknowall.com |
3 |
91.121.109.209 |
4 |
217.12.202.40 |
5 |
94.242.222.68 |
6 |
82.118.242.124 |
7 |
46.151.209.33 |
8 |
217.79.179.14 |
9 |
91.214.203.144 |
10 |
95.211.198.231 |
11 |
195.154.180.60 |
12 |
5.149.250.54 |
13 |
91.200.13.76 |
14 |
94.185.80.82 |
15 |
62.210.180.229 |
16 |
91.200.13.76 |
17 |
23.111.177.114 |
18 |
zuh3vcyskd4gipkm.onion |
19 |
6b57dcnonk2edf5a.onion |
20 |
tljmmy4vmkqbdof4.onion |
21 |
zuh3vcyskd4gipkm.onion |
22 |
4seiwn2ur4f65zo4.onion |
4. 영향 받는 제품
연번 |
제품 |
상세 |
1 |
Linksys Devices |
- E1200, E2500, E3000, E3200, E4200 - RV082 - WRVS4400N |
2 |
Mikrotik Devices |
- CCR1009, CCR1016, CCR1036, CCR1072 - CRS109, CRS112, CRS125 - RB411, RB450, RB750, RB911, RB921, RB941, RB951, RB952, RB960, RB962, RB1100, RB1200, RB3011 - RB Groove, RB Omnitik - STX5 |
3 |
Netgear Devices |
- DGN,1000, DGN2200, DGN3500 - R6400, R7000, R8000 - WNR1000, WNR2000, WNR2200, WNR4000 - WNDR3700, WNDR4000, WNDR4300, WNDR4300-TN - UTM50 |
4 |
QNAP Devices |
- TS251, TS439 Pro 및 QTS SW가 구동중인 QNAP의 모든 NAS 기기 |
5 |
TP-Link Devices |
- R600VPN - TL-WR741ND - TL-WR841N |
6 |
D-Link Devices |
- DES-1210-08P - DIR-300, DIR-300A - DSR-250N, DSR-500N, DSR-1000, DSR-1000N |
7 |
Asus Devices |
- RT-AC66U, RT-N10, RT-N10E, RT-N10U, RT-N56U, RT-N66U |
8 |
Huawei Devices |
- HG8245 |
9 |
Ubiquiti Devices |
- NSM2 - PBE M5 |
10 |
ZTE Devices |
- ZXHN H108N |
5. 악성코드 해쉬 정보
* 1단계 악성코드 (SHA-256 / 5개)
* 2단계 악성코드 (SHA-256 / 119개)
* 3단계 플러그인 (SHA-256 / 25개)
* Self-Signed Certificate Fingerprints (SHA-256 / 16개)
6. 대응 방안
각 기기 제조사별 보안공지(하단 참고사이트 확인)를 확인하여 대응
① 최신의 펌웨어 업그레이드 후 기본으로 설정된 관리자 패스워드 변경
② 원격관리 기능 사용 해제(관리자 페이지 접속 -> 고급설정 -> 원격 관리 -> 원격관리 사용 해제)
③ 악성코드 감염이 의심 또는 확인될 경우, 공장 초기화 설정 후 상기 조치사항 이행
※ 초기화 버튼을 5초가량 누르고 있으면 공장 초기화가 진행되며, 이를 통해 해당 악성코드 삭제 및 모든 설정 초기화가 가능
ㆍ Linksys : https://www.linksys.com/us/support-article?articleNum=246427
ㆍ Mikrotik : https://wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
ㆍ Netgear : https://kb.netgear.com/000058814/Security-Advisory-for-VPNFilter-악성코드-on-Some-Routers
ㆍ QNAP : https://www.qnap.com/en/security-advisory/NAS-201805-24
ㆍ TP-Link : https://www.tp-link.com/us/faq-2212.html
ㆍ D-Link : https://securityadvisories.dlink.com/announcement/publication.aspx?name=SAP10085
ㆍ Huawei : https://www.huawei.com/ch-en/psirt/security-notices/huawei-sn-20180607-01-vpnfilter-en
1) Snort 룰 탐지 설정
순 번 |
내용 |
1 |
▶ 악성코드-CNC Unix.Trojan.Vpnfilter variant outbound connection attempt |
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"악성코드-CNC Unix.Trojan.Vpnfilter variant outbound connection attempt"; flow:to_server,establishedcontent:"User-Agent: Mozilla/6.1 (compatible|3B| MSIE 9.0|3B| Windows NT 5.3|3B| Trident/5.0)|0D 0A|"; fast_pattern:onlyhttp_headermetadata:impact_flag red, policy balanced-ips drop, policy max-detect-ips drop, policy security-ips drop, ruleset community, service http; reference:url,virustotal.com/en/file/0e0094d9bd396a6594da8e21911a3982cd737b445f591581560d766755097d92/analysis/; classtype:trojan-activity | |
2 |
▶ 악성코드-CNC Unix.Trojan.Vpnfilter variant outbound connection attempt |
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"악성코드-CNC Unix.Trojan.Vpnfilter variant outbound connection attempt"; flow:to_server,establishedcontent:"User-Agent: Mozilla/5.0|0D 0A|Host: "; fast_pattern:onlyhttp_headercontent:"Accept: */*|0D 0A|Content-Type: application/x-www-form-urlencoded|0D 0A 0D 0A|"; http_headerhttp_headerRefererhttp_headermetadata:impact_flag red, policy balanced-ips drop, policy max-detect-ips drop, policy security-ips drop, ruleset community, service http; reference:url,virustotal.com/en/file/50ac4fcd3fbc8abcaa766449841b3a0a684b3e217fc40935f1ac22c34c58a9ec/analysis/; classtype:trojan-activity | |
3 |
▶ 악성코드-CNC vpnfilter SSL connection attempt |
alert tcp $EXTERNAL_NET [443,8443] -> $HOME_NET any (msg:"악성코드-CNC vpnfilter SSL connection attempt"; flow:to_client,establishedfast_pattern:onlymetadata:impact_flag red, policy balanced-ips drop, policy max-detect-ips drop, policy security-ips drop, ruleset community, service http; classtype:trojan-activity | |
4 |
▶ 악성코드-CNC vpnfilter SSL connection attempt |
alert tcp $HOME_NET any -> $EXTERNAL_NET [443,8443] (msg:"악성코드-CNC vpnfilter SSL connection attempt"; flow:to_server,establishedfast_pattern:onlymetadata:impact_flag red, policy balanced-ips drop, policy max-detect-ips drop, policy security-ips drop, ruleset community, service http; classtype:trojan-activity |
7. 참고 사이트
[1] http://www.ciscokrblog.com/1323
[2] http://blog.alyac.co.kr/1730
[3] https://www.fortinet.com/blog/threat-research/vpnfilter-malware---critical-update.html