반응형

** 실전 악성코드와 멀웨어 분석에 나오는 연습문제를 공부할 겸 풀이한 것입니다.


1. http://VirusTotal.com/ 에 Lab01-02.exe 파일을 업로드 하자. 기존 안티바이러스에 정의된 것과 일치하는가?


기존 안티바이러스에 정의 되어있으며 스타트페이지 관련 악성코드로 보인다.


This file was last analysed by VirusTotal on  2017-07-12 03:18:18 UTC (4시간, 53분 ago) it was first analysed by VirusTotal on  2011-07-02 17:02:09 UTC.


탐지 비율: 37/62


안티바이러스

결과

AegisLab

Troj.Downloader.Gen!c

AhnLab-V3

Trojan/Win32.StartPage.C26214


2. 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가? 파일이 패킹돼 있다면 언패킹해보자.


이 파일은 PEiD프로그램을 돌려본 결과 UPX1으로 패킹이 되어있다.



[언패킹]


3. 임포트를 보고 악성코드의 기능을 알아낼 수 있는가? 그렇다면 어떤 임포트를 보고 알 수 있었는가?


WININET.dll 에 InternetOpenUrl과 InternetOpen 임포트를 확인할 수 있으며 이는 아마도 인터넷을 열었을때 특정 url로 향하게 하는 기능으로 보인다.



4. 감염된 시스템에서 악성코드를 인식하는 데 어떤 호스트 기반이나 네트워크 기반의 증거를 사용했는가?


감염된 시스템에서 Malservice라는 이름의 서비스와 보이는 url로 네트워크 트래픽을 확인해보아야 할 것이다.




반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

1장 연습문제 1-4  (0) 2017.07.13
1장 연습문제 1-3  (0) 2017.07.13
1장 연습문제 1-1  (0) 2017.07.13
윈도우 공통 DLL  (0) 2017.07.13
PE 헤더 내 정보  (0) 2017.07.13
반응형

** 실전 악성코드와 멀웨어 분석에 나오는 연습문제를 공부할 겸 풀이한 것입니다.


1-1 이 실습은 Lab01-01.exe와 Lab01-01.dll 파일을 사용한다.

1.  http://www.VirusTotal.com에 파일을 업로드한 후 보고서를 보자. 기존 안티바이러스 시그니처에 일치하는 파일이 존재하는가?


<Lab01-01.exe 파일 업로드 결과>

파일이 이미 분석되었습니다.

This file was last analysed by VirusTotal on  2017-07-11 04:53:15 UTC (5시간, 14분 ago) it was first analysed by VirusTotal on  2012-02-16 07:31:54 UTC.

탐지 비율: 37/64


안티바이러스

결과

AegisLab

Troj.Rogue.Gen!c

AhnLab-V3

Trojan/Win32.Agent.C957604


<Lab01-01.dll 파일 업로드 결과>

파일이 이미 분석되었습니다.

This file was last analysed by VirusTotal on  2017-07-11 03:52:26 UTC (6시간, 18분 ago) it was first analysed by VirusTotal on  2011-07-04 19:57:48 UTC.

탐지 비율: 26/63


안티바이러스

결과

AegisLab

Troj.Dldr.Waski!c

ALYac

Trojan.Agent.Waski



2. 이 파일은 언제 컴파일했는가?

Lab01-01.dll 파일은 2010/12/19 16:16:38 UTC

Lab01-01.exe 파일은 2010/12/19 16:16:19 UTC



3. 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가?


Microsoft Visual C++ 6.0 으로 컴파일 되었으며 별도의 패킹은 되어있지 않다.



4. 임포트를 보고 악성코드 행위를 알아낼 수 있는가? 그렇다면 어떤 임포트인가?



Lab01-01.exe 에서 kernel32.dll의 임포트를 확인해보면 FindFirstFile과 FindNextFile뿐 아니라 파일을 열고 조작하는 함수를 볼 수 있다.

이 함수를 통해 악성코드가 파일 시스템을 탐색하고 파일을 열고 수정한다는 사실을 알 수 있다.

무슨 검색인지 알 수 없지만, exe 문자열은 공격 대상 시스템에서 실행 파일을 검색하는 기능을 암시한다.



kernel32.dll 에서 임포트 하는 흥미로운 함수는 sleep, CreateProcess 이며, 이는 흔히 백도어에 사용이 된다.

이 함수는 exec와 sleep과 조합하면 흥미로워지는데, exec 문자열은 CreateProcess를 이용한 프로그램을 실행한 백도어 명령어를 네트워크상으로 보내고 sleep 문자열은 백도어 프로그램을 잠재우는 명령어로 사용할 것이다.

5. 감염된 시스템에서 검색할 수 있는 다른 파일이나 호스트 기반의 증거가 존재하는가?



SECTION .data 쪽을 확인해보면 (C:\Windows\System32\Kernel32.dll)

kernel32.dll 의 문자 l을 숫자 1로 바꿔 kernel32.dll 시스템 파일처럼 보이게 의도했다.

이 파일은 악성코드를 탐지할 때 호스트 감염 징후로 사용할 수 있다.


6. 감염된 장비에서 이 악성코드를 발견하기 위해 사용한 네트워크 기반의 증거는 무엇인가?

Lab01-01.dll 파일의 SECTION .data(문자열) 을 확인해보면 로컬 IP 주소 127.26.152.13을 참조한다.

이 주소에 있는 프로그램은 악의적인 목적이 아닌 교육용이다.

실제 악성코드 였다면 IP 주소는 라우팅이 가능하고, 이 악성코드를 인지할 수 있는 주요 네트워크 기반의 감염 징후로 사용할 수 있을 것이다. (exec sleep 함수도 보인다!!)


7. 이 파일의 목적은 무엇이라고 판단했는가?

.dll 파일은 백도어일 것이다. .exe 파일은 DLL을 설치하거나 실행하는 데 사용한다.   



반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

1장 연습문제 1-3  (0) 2017.07.13
1장 연습문제 1-2  (0) 2017.07.13
윈도우 공통 DLL  (0) 2017.07.13
PE 헤더 내 정보  (0) 2017.07.13
윈도우 실행 PE 파일 영역  (0) 2017.07.13
반응형

악성코드 분석에서 확인 해봐야 할 윈도우 공통 DLL


kernel32.dll : 메모리, 파일, 하드웨어 접근과 조작 같은 핵심 기능을 담은 빈번히 공통으로 사용하는 DLL이다.


Advapi32.dll : 이 DLL을 이용하면 서비스 관리자나 레지스트리 같은 추가 핵심 윈도우 컴포넌트에 접근할 수 있다.


User32.dll : 이 DLL은 버튼, 스크롤바, 그리고 사용자 행위 제어와 반응 컴포넌트 등 모든 사용자 인터페이스 컴포넌트를 담고 있다.


Gdi32.dll : 이 DLL은 그래픽 보기와 조작 관련 함수를 담고 있다.


Ntdll.dll : 이 DLL은 윈도우 커널 인터페이스다. 항상 간접적으로 Kernel32.dll를 통해 임포트 하지만, 실행 파일은 일반적으로 이 파일을 직접 임포트 할 수 없다. 실행 파일이 이 파일을 임포트 한다면 이는 작성자가 윈도우 프로그램에 일반적으로  허용된 기능으로 사용하지 않는다는 의미다. 기능을 숨기거나 프로세스를 조작하는 등의 특정 작업에 이 인터페이스를 사용한다.


WSock32.dll & Ws2_32.dll : 이는 네트워킹 DLL이다. 이를 이용하는 프로그램은 네트워크에 연결하거나 네트워크 관련 작업을 수행할 가능성이 높다.


Wininet.dll : 이 DLL은 FTP, HTTP, 그리고 NTP 같은 프로토콜을 구현한 상위 수준의 네트워크 함수를 담고 있다.

반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

1장 연습문제 1-2  (0) 2017.07.13
1장 연습문제 1-1  (0) 2017.07.13
PE 헤더 내 정보  (0) 2017.07.13
윈도우 실행 PE 파일 영역  (0) 2017.07.13
악성코드의 유형  (0) 2017.07.13
반응형

PE 헤더 내 자주 등장하는 정보들


임포트(Imports) : 악성코드가 사용하는 다른 라이브러리 함수


익스포트(Exports) : 다른 프로그램이나 라이브러리가 호출할 수 있는 악성코드 내의 함수


시간 날짜 스탬프(Time Date Stamp)  : 프로그램이 컴파일 된 시간


섹션(Sections) : 파일 내의 섹션명과 디스크와 메모리 크기


서브시스템(Subsystem) : 프로그램이 커맨드라인 기반인지 GUI 애플리케이션인지 알려줌


리소스(Resources) : 파일 내에 포함된 문자열, 아이콘, 메뉴, 기타 정보

반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

1장 연습문제 1-1  (0) 2017.07.13
윈도우 공통 DLL  (0) 2017.07.13
윈도우 실행 PE 파일 영역  (0) 2017.07.13
악성코드의 유형  (0) 2017.07.13
악성코드 분석 기법  (0) 2017.07.13
반응형

.text : 실행 코드를 담고 있음


.rdata : 프로그램 내의 전역에서 접근 가능한 읽기 전용 데이터를 담고 있음


.data : 프로그램을 통해 접근 가능한 전역 데이터를 저장함


.idata : 존재 시 임포트 함수 정보를 저장하고 있으며, 존재하지 않는다면 .rdata 섹션 내의 임포트 함수 정보에 저장됨


.edata : 존재 시 익스포트 함수 정보를 저장하고 있으며, 존재하지 않는다면 .rdata 섹션 내의 익스포트 함수 정보에 저장됨


.pdata : 64비트 실행 파일에만 존재하며, 예외 처리 정보를 저장함


.rsrc : 실행 파일에 필요한 리소스를 저장함


.reloc : 라이브러리 파일 재배치 정보를 담고 있음

반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

1장 연습문제 1-1  (0) 2017.07.13
윈도우 공통 DLL  (0) 2017.07.13
PE 헤더 내 정보  (0) 2017.07.13
악성코드의 유형  (0) 2017.07.13
악성코드 분석 기법  (0) 2017.07.13
반응형

악성코드 분석 공부용으로 적합한 실제와 유사한 악성코드 샘플 사이트


http://www.practicalmalwareanalysis.com


http://www.nostarch.com/malware.htm

반응형
반응형

악성코드의 유형


악성코드를 분석할 때 악성코드가 시도하는 행위를 먼저 추측하고 그런 가설을 확인하는 방법으로 분석 속도를 높일 수 있다. 악성코드가 일반적으로 하는 행위를 알고 있다면 최선의 추측을 할 수 있을 것이다. 이를 위해 대다수 악성코드가 속하는 범주를 살펴보자.


1) 백도어(Backdoor)

  공격자의 접근을 허용할 목적으로 컴퓨터에 자기 자신을 설치하는 악성코드. 백도어는 공격자가 부분 인증이나 무인증(no authentication)으로 컴퓨터에 접속해 로컬 시스템에서 명령어를 실행할 수 있게 한다.


2) 봇넷(Botnet)

  공격자가 시스템에 접속할 수 있다는 점에서 백도어와 유사하나 동일한 봇넷에 감염된 모든 컴퓨터가 하나의 명령 제어(C&C : Command-and-Control) 서버로 부터 동일한 명령어를 수신한다.


3) 다운로더(Downloader)

  다른 악성코드를 다운로드할 목적만으로 존재하는 악성코드로, 흔히 시스템에 처음 접근 권한을 얻으면 공격자는 다운로더를 설치한다. 다운로더 프로그램은 추가 악성코드를 다운로드하고 설치한다.


4) 정보 유출 악성코드(Information-stealing malware)

  피해자의 컴퓨터에서 정보를 수집해서 공격자에게 전송하는 악성코드이다. (ex: 스니퍼, 패스워드 해시 수집기, 키로거 등) 이 악성코드는 전형적으로 이메일이나 온라인 뱅킹 같은 온라인 거래에 접근 권한을 얻고자 할 때 사용한다.


5) 실행기(Launcher)

  다른 악성 프로그램을 실행할 때 사용하는 악성프로그램으로 일반적으로는 시스템의 상위 권한이나 은폐를 위해 다른 악성프로그램을 실행할 때 이전 기법과 다른 기법을 사용한다.


6) 루트킷(Rootkit)

  다른 코드 내에서 자신의 존재를 숨기도록 설계한 악성코드이다. 루트킷은 공격자의 원격 접속 허용과 피해자의 코드 탐지를 어렵게 하기 위해 백도어 같은 다른 악성코드를 함께 사용한다.


7) 스케어웨어(Scareware)

  감염된 사용자가 뭔가를 구매하게 겁을 주는 악성코드로 보통 안티바이러스나 다른 보안프로그램으로 가장한 사용자 인터페이스를 가진다.

시스템이 악성코드에 감염됐다거나 그들의 ‘소프트웨어’를 사야만 제거할 수 있다고 사용자를 속이지만, 실제 구입하면 소프트웨어는 스케어웨어를 삭제할 뿐 아무런 작업도 하지 않는다.


8) 스팸 전송 악성코드(spam-sending malware)

  사용자의 장비를 감염시켜 스팸을 전송하는 데 이용하는 악성코드이다. 공격자는 스팸 전송 서비스를 판매해 이 악성코드로 수익을 얻는다.


9) 웜/바이러스(worm/virus)

  자기 자신을 복제해 추가로 컴퓨터를 감염시키는 악성코드이다.



반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

1장 연습문제 1-1  (0) 2017.07.13
윈도우 공통 DLL  (0) 2017.07.13
PE 헤더 내 정보  (0) 2017.07.13
윈도우 실행 PE 파일 영역  (0) 2017.07.13
악성코드 분석 기법  (0) 2017.07.13
반응형

악성코드의 분석 기법


1) 기초 정적 분석

  기초 정적 분석은 실제 명령어를 보지 않고 실행 파일을 조사하며 파일의 악성 여부를 확인하고, 기능 정보와 그 정보를 이용해 간단한 네트워크 시그니처를 생성할 수 있다.

직관적이며 신속히 수행할 수 있지만, 정교한 악성코드 분석에 비효율적이고 중요한 행위를 놓칠 수 있다.


2) 기초 동적 분석

  기초 동적 분석은 악성코드를 실행한 후 감염 흔적을 제거하거나, 유효한 시그니처를 만들거나, 두 가지 모두를 위해 시스템의 행위를 관찰한다. 하지만 악성코드를 안전하게 실행하기 위해 자신의 시스템이나 네트워크에 피해에 대한 위험 없이 연구용으로 실행할 수 있는 환경을 설정해야 한다.


3) 고급 정적 분석

  고급 정적 분석은 프로그램의 명령어가 하는 작업이 무엇인지 파악할 목적으로 실행 파일을 디스어셈블러로 로드해 악성코드의 내부를 역공학하는 과정으로 구성돼 있다. 명령어는 CPU가 실행하므로 고급 정적 분석을 통해 프로그램의 정확한 내용을 알 수 있다.


4) 고급 동적 분석

  고급 동적 분석은 디버거를 이용해 동작하는 악성 실행 파일의 내부 상태를 점검한다. 실행 파일에서 세부 정보를 추출하는 다른 방식을 제공하며 이 기법은 다른 기법으로 알아내기 어려운 정보를 획득할 때 특히 유용하다.




반응형

'악성코드분석(리버싱)' 카테고리의 다른 글

1장 연습문제 1-1  (0) 2017.07.13
윈도우 공통 DLL  (0) 2017.07.13
PE 헤더 내 정보  (0) 2017.07.13
윈도우 실행 PE 파일 영역  (0) 2017.07.13
악성코드의 유형  (0) 2017.07.13

+ Recent posts