Detecting Malicious code using Yara in Python Saint Security Dev Team 박건 0
소개 Introduction 박건 (Chris Park) 세인트시큐리티시스템개발팀 namegpark@gmail.com C#, C++, Python malwares.com 서비스개발 PULLer 서비스개발 (EXF) 1
목차 CONTENTS 01 악성코드소개 02 Yara 소개 03 설치및사용 04 개발 2
01 3.20 사이버테러 3.20 사이버테러에대한전반적인소개에대해설명합니다. 개요 2013 년 3 월 20 일오후주요방송사와금융기관의내부네트워크에연결된모든 PC 를공격하여디스크파괴 (MBR 영역 ) 를통해업무전산망을마비시키는사상최대의보앆사고발생 * 일시 : 2013 년 3 월 20 일오후 12 시 ~ 14 시 * 피해기관 피해기관사용네트워크백싞 KBS KT, LG U+ 하우리 MBC KT 앆랩 YTN SK 브로드밴드, LG U+ 하우리 싞한은행 KT, LG U+ 앆랩 농협 KT, SK 브로드밴드, LG U+ 앆랩 * 증상인터넷접속시, hacked by Whois Team 이라는뜨고, 부팅이앆됨 3
01-1 3.20 사이버테러분석 3.20 악성코드에대한분석과정을설명합니다. 악성코드구성 악성코드이름 ApcRunCmd.exe 파일크기 24.0 KB MD5 db4bbdc36a78a8807ad9b15a562515c4 악성코드이름 AmAgent.exe 파일크기 24.0 KB MD5 5fcd6e1dace6b0599429d913850f0364 악성코드이름 vti_rescan.exe 파일크기 417.5 KB MD5 9263e40d9823aecf9388b64de34eae54 4
01-2 3.20 사이버테러분석 3.20 악성코드에대한분석과정을설명합니다. vit_rescan 악성코드분석 (Dropper) Dropper 실행 (vit_rescan.exe) File Create 원격접속프로그램 (alg.exe) 파일전송프로그램 (comime.exe) MBR 파괴 (agentbase.exe) ~v3.log 파일체크 악성코드실행 (agentbase.exe) 5
01-3 3.20 사이버테러분석 3.20 악성코드에대한분석과정을설명합니다. vit_rescan 악성코드분석 (Dropper) 악성파일생성 6
01-4 3.20 사이버테러분석 3.20 악성코드에대한분석과정을설명합니다. vit_rescan 악성코드분석 (Dropper) 최종적으로 agentbase.exe 실행 7
01-5 3.20 사이버테러분석 3.20 악성코드에대한분석과정을설명합니다. Agentbase.exe 악성코드분석 악성코드실행 (agentbase.exe) 프로세스종료 (pasvc.exe, clisvc.exe) 물리디스크체크 MBR 파괴 드라이브체크 VBR 파괴 재부팅 (shutdown r t 0) 8
01-6 3.20 사이버테러분석 3.20 사이버테러분석에대한내용을설명합니다. MD5 : F0E045210E3258DAD91D7B6B4D64E7F3 MD5 : DB4BBDC36A78A8807AD9B15A562515C4 MD5 : 5FCD6E1DACE6B0599429D913850F0364 9
01-7 3.20 사이버테러분석 3.20 사이버테러분석에대한내용을설명합니다. 3.20 악성코드들의공통점은? 1. clisvc.exe 와 pasvc.exe 프로세스를죽인다. 2. 코드내에 shutdown 명령어가내장되어있다. 3. MBR과 VBR를 Overwrite한다 10
02 Yara 소개 Yara 에대한소개입니다. 악성코드샘플에포함된패턴을이용하여특성과프로세스를기준으로악성파일을분류하는데사용하는툴 VirusTotal 이개발하였고, 코드관리는 Google 에서하고있다. 11
02-1 Yara 소개 Yara 에대한소개입니다. Yara 의역사 Yara 는 2008 년에 1.0 버전이 VirusTotal 팀에개발이완료되어세상에공개되었고, 구글오픈소스 (Open Source) 로관리되고있다. 2015.11.25 기준 3.4.0 버전까지업데이트되었다. Yara 의장점 기존패턴매칭에비해서 EntryPoint, Offset 등을통해효율적인패턴매칭수행. 복합적인 rule 적용및태그기능지원 Yara 의단점 실습! Yara 를사용하고있는주요서비스및제품 12
02-2 Yara 특징 Yara 의특징에대해설명합니다. Yara Platform Yara 는멀티플랫폼의지원으로 Linux, Mac OS X, Windows 시스템에서모두사용할수있다. Yara 의사용 Yara 소스코드직접컴파일 Yara-Python 확장기능을통한개발 Yara 실행파일실행 Download Source Code : https://github.com/plusvic/yara (GitHub) Documentation : http://yara.readthedocs.org/en/v3.4.0/ 13
02-3 Yara Rule 작성 Yara Rule 을작성하는법에대해서설명합니다. Yara Ruleset Yara 를실행하기위해서프로세스나파일에서확인하고자하는패턴정보가담긴 Rule 을작성해야한다. Ruleset 파일은사용자가원하는디렉터리에두고실행할때불러와서실행시킨다. all and any ascii at condition contains entrypoint false filesize fullword for global in import include int8 int16 int32 int8be int16be int32be matches meta nocase not or of private rule strings them True uint8 uint16 uint32 uint8be uint16be uint32be wide Yara Rule 의기본예시 14
02-4 Yara Rule 작성 Yara Rule 을작성하는법에대해서설명합니다. 1) strings Strings section 에서는텍스트스트링, 정규표현식, Hex 스트링형태등으로작성할수있다. 앞에사용된변수명 (identifier) 을이용하여 condition 구문을작성하게된다. 1-1) Hex String Type { } 사이 hex 값을입력하게되는데모든 hex 값을알지못하더라도와일드카드를통하여대체할수있다. ex) $str_hex = { FF FF?? FF???? FF FF } 1-2) Regex Type 정규표현식형태는 / / 사이에표기하고, Yara 의정규표현식기준은 Perl 을따른다 ( 참고 : http://www.pcre.org/pcre.txt ) 1-3) string Type 사이에 ASCII 인코딩을기준으로작성할수있다. ( 대소문자를구별하지않을시 nocase 키워드를사용한다.) 15
02-5 Yara Rule 작성 Yara Rule 을작성하는법에대해서설명합니다. 2) condition condition 는 boolean 값으로만결과가나타난다. (True or False) 기본적인 C 연산자 ( 산술, 관계연산자등 ) 를지원한다. and or not >= <= > < ==!= + - * \ & << >> ~ # Rule 해석 파일시그니처내에 $str 과 $hex 가매칭되는게있다면 True 반홖 16
02-6 Yara Rule 작성 Yara Rule 을작성하는법에대해서설명합니다. Rule 해석 파일시그니처내에 $str 는 Offset 4245 에 $re 는 Offset 200 에있다면 True 반홖 Rule 해석 파일이 400KB 이상이면 True 반홖 17
02-7 Yara Rule 작성 Yara Rule 을작성하는법에대해서설명합니다. 3) meta meta 는기본적으로 Rule 에영향을미치지않는다. Strings 나 condition 에사용할수없다. meta 는추가정보를입력하는것으로룰작성자, 작성일등을기록하는데사용한다. 18
02-8 알아두면유용한키워드 알아두면유용한키워드 1) nocase 대소문자를구분하지않고탐색한다. Rule 대문자설정 문자열소문자설정 탐지! 19
02-9 알아두면유용한키워드 알아두면유용한키워드 2) wide 바이너리나파일내에문자당 2 바이트로인코딩된문자열을검색하는데유용하다. 문자당 2 바이트인코딩 탐지! 20
이렇게쉽고빠르게사용할수있는데단점이대체뭔가요? 21
02-10 Yara 단점 Yara 에대한단점을설명합니다. 테스트코드작성 콘솔화면에 Hello SecurityPlus 를출력시켜주는간단한테스트코드 Yara 실행결과 정상적으로탐지된것을확인할수있다. 22
02-11 Yara 단점 Yara 에대한단점을설명합니다. 테스트코드작성 콘솔화면에 Hello SecurityPlus 를출력시켜주는간단한테스트코드 Yara 실행결과 탐지실패 23
왜탐지를못할까? 시그니처방식의한계 24
직접해봐야이해가빠릅니다! 실습해보기 25
실습 실습내용 yara 설치및홖경구성 앞서설명한 yara 의단점에대한실습 nocase, wide 키워드실습 3.20 악성코드탐지코드자동화툴개발 실습준비물 Ubuntu 14.04 Desktop or Server (VMWare or Virtualbox image) Python 2.7 Visual Studio or C lang Compiler Windows 샘플파일 Keyword Binary : http://me2.do/gjwc4jhm 3.20 CyberTerror : http://me2.do/fqm2wgtm Password :!@chris_secu 26
03 Yara 설치 Yara 설치와시작 tar.gz 확장자소스코드다운로드 (wget 명령어사용 ) wget https://github.com/plusvic/yara/archive/v3.4.0.tar.gz 27
03-1 Yara 설치 Yara 설치와시작 소스코드압축해제 tar xvf v3.4.0.tar.gz autoreconf 설치 sudo apt-get install dh-autoreconf yara 설치 ( 소스코드압축해제 )./bootstrap.sh./configure make sudo make install yara-python 확장모듈설치 cd yara-python python setup.py build sudo python setup.py install (yara 설치후 yara-python 디렉터리생성 ) 28
03-2 Yara 설치 Yara 설치와시작 Python yara 테스트 python import yara 아래와같은에러가발생한다면? sudo echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig yara 버전확인 yara -v 29
문제 ( 제한시간 5 분 ) Prob 1 아래와같은바이너리가주어졌다. securityplus 라는문자열을패턴매칭을통해탐지하는룰셋을작성하시오. 단, nocase 와 wide 키워드둘다사용해야함. 결과제출 Conference_[ 이름 ] 이라는제목으로 namegpark@gmail.com 으로룰셋제출 선착순 스타벅스기프티콘 (1 명 ) 30
감사합니다. E-mail : namegpark@gmail.com (Q & A) 31