리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123,...

38
FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA 리눅스 악성코드 연구 동향 CPUU (LG Electronics) [email protected] cpuu.postype.com 2019. 02. 27.

Transcript of 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123,...

Page 1: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

FORENSIC INSIGHT;DIGITAL FORENSICS COMMUNITY IN KOREA

리눅스 악성코드 연구 동향

CPUU

(LG Electronics)

[email protected]

cpuu.postype.com

2019. 02. 27.

Page 2: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 2

목차

1. 개요

• 리눅스 악성코드 연구의 필요성 (feat. Mirai botnet)

2. 자동화 분석 시스템 동향

• Cuckoo sandbox, Limon sandbox, Detux

• Padawan (from “Understanding Linux Malware”, IEEE S&P 2018)

3. 리눅스 악성코드 유형 분석

4. PADAWAN Demo

5. 마무리 정리

Page 3: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 3

리눅스 악성코드?

- 악성코드란?

- Windows vs Linux

- Mirai (Japanese: 未来, 'future') 사례

- 난제(難題)

Page 4: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 4

리눅스 악성코드?

정의 (Wikipedia)

• Malware (a portmanteau for malicious software) is any software intentionally designed

to cause damage to a computer, server, client, or computer network.

분류

• Ransomware, Trojans, Viruses, Worms, Rootkits, Bootkits, Keyloggers, Backdoors, Web Shell ..

악성코드(Malware)

Page 5: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 5

리눅스 악성코드?

왜 만드나요?

• 재미 / 프로그래밍 실력 및 해킹 능력 과시용

• 국가 혹은 정부에 의한 군사기밀이나 외교 정보 수집

• 돈이 된다.. (Black Market)

악성코드 관련 분야

• Anti-malware

• 보안 관제

• 탐지 및 차단에 관한 연구들 (AVTOKYO Computer Security Conference)

악성코드(Malware)

Page 6: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 6

리눅스 악성코드?

운영체제 시장 점유율

• (당연히) Windows 가 압승, 아이폰 출시 이후 Apple macOS 도약

• iOS와 Android 등 모바일 OS 상승

• 돈이 되려면? 당연히 점유율 !

• 그런 의미에서 리눅스? 찬밥 신세(였었다)

Windows vs Linux

Page 7: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 7

리눅스 악성코드?

Mirai botnet (DDoS)

• 참고 : “Understanding the Mirai Botnet”, Usenix Security 2017

Erebus (Ransomware)

OutlawCountry

리눅스 악성코드 사례

Page 8: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 8

리눅스 악성코드?

목표 시스템의 다양성(Diversity)

• CPU: Intel, ARM, MIPS, Motorola, Sparc

• OS: Linux, BSD, Android

• Libraries: glibc, uclibc, libpcap, libopencl

난제(難題)

Page 9: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 9

리눅스 악성코드?

정적 링크 방식 컴파일

• 제작자 : 환경에 구애받지 않고 실행할 수 있도록 라이브러리까지 통째로 바이너리에 넣음

• 분석자 : ?????????????? ㅠ.ㅜ ?????????????

리눅스 특유의 권한 관리

• 분석 환경 구축의 어려움

관련 연구 부재

난제(難題)

Statically-linked ELFunportable

Unknown device

Page 10: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 10

자동화 분석 시스템

- 기존 동향

- Dataset 수집

- Padawan 분석 시스템 구조

- 정적/동적 분석

Page 11: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 11

자동화 분석 시스템

Cuckoo sandbox

• (주로) Windows 용 악성코드 위주 분석

• Linux 지원 언급되어 있지만 실상은 GUI를 비롯한 껍데기만 (연동은 사용자가 직접 삽질..)

Limon Sandbox

• strace와 sysdig 를 이용함. x86-flavored 에서만 작동.

Detux

• x86, x86-64, ARM, MIPS 지원한다고 하나 readelf 와 네트워크 관련 덤프밖에 제공 안함

Tencent HABO sandbox (VirusTotal)

• 관련정보가 충분히 공개되어 있지 않음. x86만 지원하는 것으로 확인.

기존 동향

• https://cuckoosandbox.org/• https://github.com/monnappa22/Limon• https://blog.virustotal.com/2017/11/malware-analysis-sandbox-aggregation.html

Page 12: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 12

자동화 분석 시스템

VirusTotal Intelligence API

• 매일 5곳 이상의 분석기관에서 악성으로 판정한 140개 + AV Score 기준 1~5 골고루 60개씩

• Linux Binary only, 중복되거나 작동하지 않는 것 제외. 총 10,548개

Dataset 수집

Page 13: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 13

자동화 분석 시스템

수집된 리눅스 악성코드

• 다양한 Architecture, X86-64가 가장 많았음.

• 파일 크기 기준 134byte의 작은 백도어부터, 크게는 14.8MB의 Go언어로 작성된 Botnet 까지

Dataset 수집

Page 14: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 14

자동화 분석 시스템

AVClass

• 오픈소스 기반 대규모 악성코드 Labeling 도구 ( https://github.com/malicialab/avclass )

• 악성코드 과(科, Family) 분류에 활용

Dataset 수집

Pymadro Miner Ebolachan Golad Lady Connectback Mirai

Elfpatch Pomedaj Liora Ddostf Cinarek Ztorg Elknot

Shishiga Aidra Chinaz Fysbis Ganiw Scanner Roopre

Mrblack Equation Logcleaner Sniff Tsunami Sshbrute Probe

Znaich Erebus Xingyi Xaynnalc Gafgyt Flood Coinminer

Bassobo Killdisk Eicar Remaiten Bossabot Midav Getshell

Drobur Webshell Dcom Cloudatlas Luabot Iroffer Mayday

Grip Darkkomet Prochider Ircbot Xhide Portscan Xunpes

Diesel Setag Raas Shelma Shellshock Nixgi Wuscan

Cleanlog Sshdoor Psybnc Themoon Rekoobe Intfour Pulse

Sickabs Hajime Hijacker Mumblehard Darlloz Sotdas Ladvix

Pnscan Ropys Lightaidra Moose Vmsplice Ddoser Spyeye

• Sebastin et al. ”Avclass: A tool for massive malware labeling,” International Symposium on Research in Attacks, Intrusions, and Defenses 2016.

Page 15: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 15

자동화 분석 시스템

Padawan ( https://padawan.s3.eurecom.fr/ )

• 프랑스 Eurecom 대학 소속 연구원들 개발. (Cisco가 support?)

Develop a dynamic analysis sandbox for Linux binaries (and IoT devices)

Identify challenges and limitations of porting traditional techniques to the new environment

Understand differences in the malware characteristics (packing, obfuscation, VM detection,

privilege escalation, persistence...) with respect to Windows malware

Padawan 분석 시스템 구조

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 16: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 16

자동화 분석 시스템

분석 Pipeline

• 수집된 데이터 파일의 구조와 메타데이터 분석

• 정적 분석(Static analysis)

• 동적 분석(Dynamic analysis)

Padawan 분석 시스템 구조

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 17: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 17

자동화 분석 시스템

분석 Pipeline

• 수집된 데이터 파일의 구조와 메타데이터 분석

ELF 포맷 관련한 현존하는 도구들의 한계로, IDA Pro 및 자체 개발 Parser 이용하였음

변칙적(anomalous)인 경우와 ELF의 명세 자체를 준수하지 않은(invalid) 경우에 대한 처리

Padawan 분석 시스템 구조

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 18: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 18

자동화 분석 시스템

정적 분석

• 바이너리 코드 분석 : IDA Pro 스크립트 자체 제작

• 패킹 탐지 : 패킹되어 있는 경우 바이너리 분석이 되지 않음

UPX 등으로 언팩 가능한지 확인 후 성공하면 바이너리 코드 재분석

언팩이 불가능한 경우 별도로 데이터베이스에 기록하여 동적분석에서 차별화

Padawan 분석 시스템 구조

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

ooo ooooooooo . ooooooo ooooo‘ 8 ’ ‘ 8 88 ‘ Y88 . ‘8888 d8 ’

888 . d88 ’ Y888 . . 8P ‘ 8888 ’

.8PY888 .

ooooo ‘ 888 ’

888888888

‘ 88.

88

8. 8’

888ooo88P ’888

888

‘ YbodP ’ o888o

d8 ’ ‘ 8 8 8 bo888o o88888o

The U l t i mat e Packer f o r eX ecu t ab l es

Page 19: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 19

자동화 분석 시스템

동적 분석

• 에뮬레이팅 환경(일명 sandbox) 5종 구축

KVM 가상화 솔루션 : 인텔 기반 32bit와 64bit

QEMU : ARM, MIPS, PowerPC(32bit)

• 5분 동안 System call, userspace function, Network PACP 등 수집

Padawan 분석 시스템 구조

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 20: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 20

리눅스 악성코드 유형 분석- ELF headers Manipulation

- Persistence

- Deception

- Required Privileges

- Packing & Polymorphism

- Process Interaction

- Information Gathering

- Evasion

- Libraries

- etc.

Page 21: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 21

리눅스 악성코드 유형 분석

샘플에서 관찰된 Behaviors 9가지 유형 정리

리눅스 악성코드 유형 분석

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 22: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 22

리눅스 악성코드 유형 분석

ELF(The Executable and Linkable Format) : 리눅스 실행 바이너리 형식 표준

• 메모리에 로드되기 전 단계에서부터 커널에서 해석이 이루어짐

e_ident, e_type, e_machine

이런 부분에 문제가 생길시 분석 도구에 버그 유발 (IDA Pro 및 자체개발 Parser로 해결)

• Anomalous : 변칙적이지만 어쨌거나 ELF 명세는 준수한 경우 (Sections table removed)

• Invalid : ELF 명세에 부합하지 않지만 운영체제에 의해 적절히 실행 가능한 경우

1. ELF 헤더 조작(ELF headers Manipulation)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 23: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 23

리눅스 악성코드 유형 분석

악성코드가 대상 시스템에 침투 성공했다면 가장 먼저 하려는 행위!

• 시스템 종료시에도 은둔하였다가 재부팅시 자동 실행되도록

• 유저 로그인시 또는 특정 이벤트 발생시 작동하도록

• MS Windows의 경우 레지스트리를 이용

• Linux의 경우 (적절한 권한 필요)

Subsystems Initialization : /etc/init.d

Time-based Execution : /var/spool/cron

File Infection and Replacement : /bin/ls

User Files Alteration : ~/.bashrc

• 적절한 권한이 부여되어야 설정할 수 있으며,

User 권한으로 하면 해당 사용자에 한해 제한적 작동

2. 지속성(Persistence)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 24: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 24

리눅스 악성코드 유형 분석

일명 Stealth 전술

• 프로세스의 이름을 바꾸는 것 만으로도 충분한 효과 ( ex : sshd 등 유명한 것 또는 무작위)

• 52%의 샘플이 작동시에 프로세스명을 변경하는 것으로 확인

prctl 시스템 콜의 PR_SET_NAME

프로그램 수행시 argument 변경 지정

• 원본 프로세스와의 실행경로 및 파일명 꼼꼼하게 점검하면 탐지 가능

3. 위장술(Deception)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 25: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 25

리눅스 악성코드 유형 분석

리눅스 특유의 권한 체계

• 악성코드들은 유저 권한이 일반인지 아니면 최고 관리자(root, administrator)인지 파악함

• 샘플 수행 중 루트 권한이 요구되는 경우, 부여하는 것과 아닌 경우를 각각 테스트하고 비교

• 전체 데이터셋의 25%(2637)의 샘플들이 두 수행 결과에서 상이한 행위를 보임

• 알려진 취약점 PoC 코드를 이용하려는 시도가 많으나, 실패하는 케이스도 많음

4. 권한 요청(Required Privileges)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328, CVE-2014-4699 등

Page 26: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 26

리눅스 악성코드 유형 분석

패킹을 통한 난독화

• 정적 분석을 어렵게하고, 수작업으로 분석하는 리버스 엔지니어에게 고통을 안겨줌

• MS Windows 의 경우 다수의 상용 또는 무료 도구 있으나 리눅스에서의 기대는 사치

• 1998 출시된 오픈소스 UPX가 리눅스에서 유일하게 널리 쓰임 (학술적 제안은 실무에 적용 X )

• symbol 개수, 디스어셈블 코드 섹션 비율, 함수 식별 등을 통해 휴리스틱으로 패커 추정

• 다수가 UPX 또는 그 변종(Variation), Vanilla 多

• 자체제작(Custom) 패커를 쓴 3개 샘플 확인

Mumblehard family

Perl 인터프리터를 통해 언패킹

해독된 내용을 다시 Perl로 수행

5. 패킹과 다형성 (Packing & Polymorphism)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 27: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 27

리눅스 악성코드 유형 분석

프로세스 관련 행위

• 하위 프로세스 생성

전체 샘플의 25%만 단일 프로세스로 작업 수행

9%는 새로운 프로세스를 1개 추가, 43%는 3개(데몬화를 위한 double-fork)

23%는 굉장히 많은 프로세스 생성. Ex) botnet 통제를 위해 1684개의 좀비 컨트롤 및 DDoS 지시

• 기존 설치된 다른 바이너리를 임의로 수행

13%의 샘플은 적어도 하나의 명령어 임의수행 : 93 cmdlines (sh, sed, cp, rm, grep, ps, insmod ..)

• 시스템에 동작중인 다른 프로세스에 침투 : 디버그 굉장히 어려움

ptrace syscall

PTRACE_ATTACH

process_vm_writev system call

6. 프로세스 작동(Process Interaction)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 28: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 28

리눅스 악성코드 유형 분석

해당 시스템 내부에서 활동을 수행하기 위한 제반 환경 조사를 위해 다양한 정보 수집

• Proc and Sysfs File Systems

시스템 환경설정 정보

네트워크 관련 정보

프로세스 관련 정보

• Configuration Files

/etc/ 하위의 DNS 환경설정(resolv.conf)

사용자 계정(passwd, shadow)

IP(hosts) 파일

etc/rc.d/rc.local : 2에서 설명한 시스템 지속성 유지를 위해..

7. 정보 수집(Information Gathering)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 29: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 29

리눅스 악성코드 유형 분석

악성행위를 수행하고 있다는 사실을 가능한 한 들키지 않고 지속하기 위함

• Sandbox Detection, Processes Enumeration, Anti-Debugging, Anti-Execution, Stalling Code

8. 회피 기법(Evasion)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 30: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 30

리눅스 악성코드 유형 분석

동적 링킹(dynamically linked)

• 외부의 라이브러리를 불러와서 사용하는 것으로 일반적으로 많이 사용되나 호환 문제

정적 링킹(statically linked)

• 이식시 호환 문제를 해결할 수 있도록, 라이브러리를 모두 통합하여 바이너리에 넣음

• 샘플의 80%는 정적 링크 방식으로 컴파일 됨

• 그러나 symbol 정보를 strip 한 비율은 24%밖에 되지 않는데, 의아한 결과임

• 악성코드 제작자가 자신의 코드가 분석되는 것을 방지하고 싶은 의지가 보이지 않음

• Windows에서는 굉장히 복잡성을 크게 하는것이 일반적이므로,

Linux 개발자들이 잘 몰라서 일까?

• Common Libraries : GNU C Library(glibc) 74.21%, uClibc 24.24%

9. 라이브러리(Libraries)

• [Cozzi, Emanuele, et al. "Understanding Linux Malware." IEEE Symposium on Security & Privacy. 2018.]

Page 31: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 31

Demo : PADAWAN

- Request access

- Submit

- Analyze

- Report

Page 32: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 32

DEMO : PADAWAN

https://padawan.s3.eurecom.fr/

• 간단한 회원가입 절차

• 승인에 3일정도 소요된 것으로 기억

Request access

Page 33: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 33

DEMO : PADAWAN

분석하고자 하는 샘플을 업로드

• 하루에 30개의 submission 가능

• 동시 업로드 가능하나 시간 소요

• 나머지는 작업대기열로 들어감

• Device 정보를 기입하지 않아도 자동으로 찾아줌

Submit

Page 34: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 34

DEMO : PADAWAN

자동 분석

• 4개까지 동시에 analysis

• 정적 분석은 빠르지만 동적 분석은 적합한 환경의 에뮬레이터 구동에 시간 소요

Analyze

Page 35: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 35

DEMO : PADAWAN

분석 결과 보고서

• Summary, VirusTotal 정보

• 정적 : ELF Header, Hash, Bytes, File type, String(URL, Path, IP)

• 동적 : User 권한 수행 결과, Root 권한 수행 결과, System call 호출

Report

Page 36: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 36

Wrap up

- 결론

- Further work

Page 37: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 37

Wrap up

결론

• 리눅스 ELF 바이너리는 작은 IoT 장치부터 대형 서버까지 어디에서나 이용되고 있다

• 이에 따라 리눅스 기반 악성코드가 점차 모습을 드러내고 있다

• 하지만 윈도우즈 환경에 비해서는 아직 비교적 초창기 수준이다

환경 구축의 어려움

활발한 연구 부족 ( fund ?)

• 윈도우 환경에서 적용된 기법들이 그대로 전수되는 방식으로 발전할 가능성 높다

향후 연구 계획

• Linux malware forensics in process memory

The Road Less Traveled

Page 38: 리눅스악성코드연구동향 - GitHub Pages* CVE-2017-7308, CVE-2017-6074, CVE-2017-5123, CVE-2017-1000112, CVE-2016-9793, CVE-2016-8655, CVE-2016-5195, CVE-2016-0728, CVE2015-1328,

forensicinsight.org Page 38

Question and Answer

본 발표 내용은 https://cpuu.postype.com/post/3265477 에 정리해두었습니다.