2014 CodeEngn Conference 11
안드로이드에서의 부트킷 동작방식 알아보기
부트킷 악성코드는 부팅 과정에서 악성코드를 감염시켜 악성코드가 실행 시 자신의 존재를 숨겨 백신에서 악성코드의 탐지와 치료를 어렵게 하기위해 사용되는 방식이다. 이러한 Oldboot 부트킷 악성코드가 올해초 2014년 1월에 안드로이드에서 발견되었다. 따라서 본 발표에서는 이 안드로이드 상에서 사용된 부트킷의 동작 방식과 특이점에 대해서 다룰 예정이다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
2014 CodeEngn Conference 11
안드로이드에서의 부트킷 동작방식 알아보기
부트킷 악성코드는 부팅 과정에서 악성코드를 감염시켜 악성코드가 실행 시 자신의 존재를 숨겨 백신에서 악성코드의 탐지와 치료를 어렵게 하기위해 사용되는 방식이다. 이러한 Oldboot 부트킷 악성코드가 올해초 2014년 1월에 안드로이드에서 발견되었다. 따라서 본 발표에서는 이 안드로이드 상에서 사용된 부트킷의 동작 방식과 특이점에 대해서 다룰 예정이다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
개인PC에 업무자료 저장을 금지시켜 내부자료 유출을 원천 차단하고 모든 자료는 중앙 파일서버에만 통합 저장하여 관리하는 전사적 파일보안 솔루션
사용자PC에 자료가 존재하지 않는 문서중앙화 환경을 제공하여 내부자료유출이 원천적으로 차단됩니다.
동일 파일을 여러 사람이 수정하는 경우 자동 이력관리로 시점 별 파일 복원 및 사용자의 실수 또는 고의로 삭제된 문서의 복원으로 체계적 문서 중앙 관리가 가능합니다.
개인PC 리소스를 활용하여 성능저하가 없고 초기 구축비용이 현저하게 절감됩니다.
AppCheck Pro 랜섬웨어 백신은 “상황 인식 기반 랜섬웨어 행위 탐지(Context-awareness based ransomware behavior detection)” 기술이 적용된 캅(CARB)엔진으로 현재까지 발견된 패턴 뿐 아니라 차후 출현 가능한 랜섬웨어까지도 탐지하여 기존 백신의 탐지 및 대응 방식으로는 빠르게 대응할 수 없는 랜섬웨어 위협으로부터 가장 확실하고 안전하게 방어할 수 있습니다
1. 악성코드 분석 사례
2008.10.07
㈜ 안철수연구소
AhnLab Security E-response Center
Anti-Virus Researcher, CISSP
장 영 준 주임 연구원
2. 2
1. Dropper/PcClient.47873
은폐 기능을 수행하며 별도의 파일들을 생성하는 드로퍼 (Dropper) 형태의 트로이목마
1) Visual C++로 제작
2) 윈도우 시스템 폴더에 2개의 DLL 파일과 1개의 드라이버 파일 생성
3) 생성한 드라이버 파일을 이용한 커널 모드(Kernel Mode) 은폐 기능 수행
4) 생성한 파일들에 대한 파일 및 레지스트리 은폐 기능 수행
5) 실행한 인터넷 익스플로러의 프로세스 및 네트워크 포트 은폐 기능 수행
6) 실행한 인터넷 익스플로러를 이용하여 외부 특정 시스템으로 접속 시도
7) 접속한 시스템을 통하여 제3의 시스템으로 재접속 후 공격자의 명령 수행
8) 실행 중인 모든 프로세스에 스레드 (Thread)로 인젝션 (Injection)하여
사용자가 입력하는 모든 키보드 입력을 후킹 (Hooking)
1. 악성코드 분석 사례
3. 3
2. 파일 형태 분석
헥사 코드(Hex Code)를 분석할 수 있는 유틸리티를 이용하여 파일 형태 분석
윈도우에서 실행이 가능하도록 제작된 PE (Portable Executable) 파일
.text, .rdata, .data의 3개의 PE (Portable Executable) 섹션 (Section)을 가지고 있음.
1. 악성코드 분석 사례
4. 4
3. 파일 구조 분석
파일의 구조를 분석할 수 있는
유틸리티를 이용하여 파일의
구조 분석
단독으로 윈도우에서 실행이 가능
하도록 제작된 실행 파일
비주얼 C++로 제작
메모리에서 시작 주소는 0x403466
1. 악성코드 분석 사례
5. 5
4. 윈도우 API 분석
파일의 IAT (Import Address Table)
분석 툴로 윈도우 API 분석
다음의 API들을 사용함으로 정상 파일
이 아닐 것으로 추정
GetSystemDirectoryA
Process32Next
CreateRemoteThread
GetModuleHandleA
WriteProcessMemory
OpenProcess
AdjustTokenPrivileges
OpenProcessToken
LookupPrivilegeValueA
1. 악성코드 분석 사례
6. 6
5. 파일 내부 문자열 분석
파일의 내부 문자열 (String)을 분석할 수 있는 유틸리티를 이용하여 분석
파일 내부 문자열 (String)에서는 정상 파일 또는 악성코드로 추정되는 특별한
내부 문자열을 확인 할 수 없음
1. 악성코드 분석 사례
7. 7
6. 파일을 시스템에서 실행
시스템 변화를 분석 할 수 있는 유틸리티를 이용하여 파일을 시스템에서 실행 후
시스템 변화 분석
생성된 파일은 없으나 레지스트리 키 값 생성으로 특정 드라이버 파일을 서비스로 등록
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesyncqjmkq "ImagePath"
Type: REG_EXPAND_SZ
Data: C:WINDOWSsystem32driversyncqjmkq.sys
파일이 드라이버 파일을 생성하고 윈도우 서비스로 레지스트리에 등록한 것으로 확인
레지스트리 분석 유틸리티를 이용하여 해당 레지스트리 키 값을 검색해보았으나 정상 윈도우
모드에서 확인되지 않음
해당 드라이버 파일을 윈도우 시스템 폴더의 드라이버 폴더에서 검색 해보았으나
정상 윈도우 모드에서 확인되지 않음
1. 악성코드 분석 사례
8. 8
7. 파일 실행 후 네트워크 분석
네트워크 포트와 패킷을 분석할 수 있는 유틸리티를 이용하여 시스템의 네트워크 분석
사용되는 포트가 없으나 특정 시스템으로 접속하는 네트워크 패킷이 분석됨
1. 악성코드 분석 사례
9. 9
8. 파일 실행 후 시스템 추가 분석 (1)
현재까지 분석 상황으로 미루어 은폐형 악성코드로 의심됨으로 은폐 기능을
탐지 할 수 있는 유틸리티로 시스템 분석
은폐 기능 탐지 유틸리티를 이용하여 인터넷 익스플로러가 은폐되어 있는 것을 탐지
그 외의 파일들이 윈도우 시스템에서 은폐되어 있는 것을 탐지
1. 악성코드 분석 사례
10. 10
실행 파일이 생성한 파일들의 현재 상태를 유틸리티를 이용하여 추가 분석
실행 파일이 생성한 YNCQJMKQ.D1L 은 은폐된 인터넷 익스플로러에 핸들 (Handle)로 실행
실행 파일이 생성한 YNCQJMKQ.DLL 은 실행 중인 프로세스들에 스레드 (Thread)로
인젝션 (Injection)
9. 파일 실행 후 시스템 추가 분석 (2)
1. 악성코드 분석 사례
11. 11
10. 파일 디버깅 및 디스어셈블링 (1)
실행 파일을 OllyDbg 를 이용하여 디버깅
실행 파일이 실행되면 시스템 사용자 계정의 임시 폴더 경로 확보
임시 폴더에 YNCQJMKQ.tmp, YNCQJMKQ.d1l 과 YNCQJMKQ.log 파일 생성
1. 악성코드 분석 사례
12. 12
11. 파일 디버깅 및 디스어셈블링 (2)
윈도우 시스템 폴더 경로 확보 후 생성한 파일들 중 YNCQJMKQ.tmp 는 YNCQJMKQ.dll 로
파일명을 변경하여 윈도우 시스템 폴더로 복사
YNCQJMKQ.d1l 은 명칭 변경 없이 윈도우 시스템 폴더로 복사
복사 이후 YNCQJMKQ.sys를 윈도우 시스템 폴더 아래의 drivers 폴더에 생성
인터넷 익스플로러를 실행한 후 YNCQJMKQ.d1l 를 인터넷 익스플로러의 핸들(Handle)로
등록 후 실행
1. 악성코드 분석 사례
13. 13
12. 파일 디버깅 및 디스어셈블링 (3)
YNCQJMKQ.d1l 는 실행된 인터넷 익스플로러를 통해 다음 함수들을 이용하여 파일내
하드코딩 된 주소의 특정 시스템으로 접속 후 파일 다운로드
InternetSetOptionA, InternetOpenA, InternetOpenUrlA, InternetReadFile
1. 악성코드 분석 사례
14. 14
13. 파일 디버깅 및 디스어셈블링 (4)
YNCQJMKQ.d1l 는 다음 함수들을 호출
YNCQJMKQ.sys를 윈도우 서비스로 실행
OpenSCManagerA, OpenServiceA
CreateServiceA, StartServiceA
YNCQJMKQ.sys는 KeServiceDescriptorTable 을 이용 하여
SSDT (System Service Descriptor Table) 후킹 (Hooking)을 하여 은폐 기능을 수행
ZwCreateFile, ZwQueryKey, ZwEnumerateValueKey, ZwEnumerateKey
ZwQuerySystemInformation, ZwQueryDirectoryFile
1. 악성코드 분석 사례
15. 15
14. 파일 디버깅 및 디스어셈블링 (5)
YNCQJMKQ.dll를 CreateRemoteThread 함수를 이용 실행 중인 프로세스들에 스레드(Thread)
로 인젝션(Injection) 후 실행
인젝션된 YNCQJMKQ.dll는 다음 함수들을 이용하여 사용자가 입력하는 키보드 입력을 후킹
SetWindowsHookExA, CallNextHookEx, GetKeyboardState,
1. 악성코드 분석 사례