보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

VPNFilter 악성코드 분석 보고서

2018.08.03

10,127


 

 

 

 

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단계 멀웨어의 추가 기능을 지원
TORC&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