악성코드분석/실전 악성코드와 멀웨어 분석 24

실전 악성코드와 멀웨어 분석 실습 12-1

파일 LAB12-01.exe와 LAB12-01.dll에서 발견되는 악성코드를 분석하자. 분석을 할 때 이 파일들은 동일한 디렉터리에 존재해야 함을 주의하자. Lab12-01.exe 분석 EnumProcesses를 통해 현재 프로세스들의 PID를 받아오고 각 PID를 인자로 서브루틴 401000에 전달하여 실행시킨다. 인자로 전달된 PID를 OpenProcess에 전달하여 핸들 값을 얻어오고, 그 핸들 값을 GetModuleBaseNameA에 전달하여 해당 핸들 값을 가진 모듈의 이름을 String1 배열에 저장한다. 그 후, strnicmp 함수를 통해 String1 배열의 내용과 explorer.exe 문자열의 내용을 비교하여 같으면 1을 반환한다. 다시 main 함수로 돌아가자. 서브루틴 401000..

실전 악성코드와 멀웨어 분석 실습 11-3

Lab11-03.exe와 Lab11-03.dll에서 발견되는 악성코드를 분석하자. 분석하는 동안 2개의 파일이 동일한 디렉터리에 있어야 함을 명심하자. 1. 기본 정적 분석을 통해 발견할 수 있는 재미있는 분석 단서는 무엇인가? Lab11-03.exe는 cisvc.exe(Content Index service)라는 문자열을 포함하고 있는 것으로 보아, 서비스 관련된 작업을 하는 것으로 추측할 수 있다. Lab11-03.dll은 GetForegroundWindow와 GetAsynKeyState 함수를 Import하고 있는 것으로 보아, 폴링 키로거로 의심해볼 수 있다. 키로깅에서 GetAsynKeyState 함수는 키가 눌렸는지 여부를 인식한 후 가장 최근의 GetAsynKeyState 호출 이후 해당 키..

실전 악성코드와 멀웨어 분석 실습 11-2

Lab11-02.dll에 있는 악성코드를 분석하자. Lab11-02.ini라는 의심 파일 역시 이 악성코드와 함께 발견됐다고 가정한다. 1. 이 DLL 악성코드에서는 무엇을 익스포트하는가? installer라는 함수를 익스포트하고있다. 2. rundll32.exe를 이용해 이 악성코드를 설치한 이후 어떤 일이 발생하는가? 아래는 installer 함수를 분석한 것이다. SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs 키에 spoolvxx32.dll 이라는 이름으로 자기 자신을 등록하여 영구적으로 설치한다. 또한 spoolvxx32.dll이라는 이름으로 시스템 디렉터리에 자신을 설치한다. 3. 악성코드를 올바르게 설치하기 위해서는 Lab..

실전 악성코드와 멀웨어 분석 실습 11-1

Lab11-01.exe에 있는 악성코드를 분석하자. 1. 악성코드는 무엇을 디스크에 다운로드 하는가? ResourceHacker로 Lab11-01.exe를 확인한 결과이다. TGAD라는 이름의 Resource 영역이 존재하는 것을 알 수 있고, 해당 영역은 MZ 헤더로 시작하는 PE파일임을 알 수 있다. 파일 내에 DisableThreadLibraryCalls라는 문자열이 존재하는 것으로 미루어 보아 해당 파일은 dll임을 추측할 수 있다. Lab11-01.exe를 IDA로 확인해보았다. Lab11-01.exe의 서브루틴 401080에서는 위에서 확인한 리소스를 msgina32.dll 라는 파일명으로 추출한다. 2. 악성코드는 어떻게 지속성(persistence)을 유지하는가? HKML\SOFTWARE\..

실전 악성코드와 멀웨어 분석 실습 9-3

OllyDbd와 IDA Pro를 이용해 파일 Lab09-03.exe에서 발견할 수 있는 악성코드를 분석하자. 이 악성코드는 모두 동일한 메모리 로드 위치를 요청하게 설계된 3개의 DLL(DLL1.dll, DLL2.dll, DLL3.dll)을 로드한다. 그러므로 IDA Pro와 OllyDbg를 통해 3개의 DLL을 살펴볼 때 각 프로그램에 따라 코드는 다른 메모리 위치에서 나타날 수 있다. 이 실습의 목적은 OllyDbg에서 코드를 볼 때 IDA Pro에서도 코드의 정확한 위치를 찾을 수 있게 편안하게 만드는 것이다. 1. Lab09-03.exe을 통해 어떤 DLL이 임포트되는가? Lab09-03.exe의 임포트되는 DLL 목록이다. strings 실행 결과 user32.dll과 DLL3.dll이라는 문자..

실전 악성코드와 멀웨어 분석 실습 9-2

OllyDbg를 사용해 파일 Lab09-02.exe에서 찾을 수 있는 악성코드를 분석해서 다음 질문에 답해보자. 1. 바이너리에서 정적으로 어떤 문자열을 볼 수 있는가? strings 실행 결과를 통해 임포트 함수 목록과 cmd라는 문자열을 발견했다. 2. 이 바이너리를 실행했을 때 어떤 일이 발생하는가? 실행했을 때 별 다른 행위 없이 종료되는 것처럼 보인다. 따라서 IDA와 OllyDbg를 통해 확인할 필요가 있다. 3. 이 샘플이 악의적인 페이로드를 실행하게 하기 위해서는 어떻게 해야 하는가? IDA로 메인함수의 시작부분에 선언되어있는 변수들의 내용을 올리디버거로 확인해보았다. 1qaz2wsx3edc라는 문자열과 ocl.exe라는 문자열을 생성하였다. 그 다음으로 GetModuleFileNameA ..

실전 악성코드와 멀웨어 분석 실습 9-1

OllyDbg와 IDA Pro를 사용해 파일 Lab09-01.exe에서 찾을 수 있는 악성코드를 분석해서 다음 질문에 답해보자. 이 악성코드는 3장에서 기본 정적과 동적 분석 기술을 사용해 기본적으로 분석됐다. 인자를 주지 않고 올리디버거로 디버깅 하였을 때 악성코드는 ShellExecuteA 함수를 통해 cmd로 자기 자신을 삭제하는 행위를 한다. -in 인자를 주고 실행하였을 경우에도 역시 스스로 삭제하는 행위를 한다. argc, argv는 메인함수의 각각 첫 번째 인자, 두 번째 인자이므로, EBP+8은 argc, EBP+C는 argv이다. EAX는 argc를 가지고 있고, ECX는 argv를 가지고 있다. 그리고 EDX가 커맨드라인 인자로 들어온 요소들 중 마지막 요소를 가리키게 한다. 이 마지막..

실전 악성코드와 멀웨어 분석 실습 7-3

이 실습에서 실행 전에 악성코드 실행 파일인 Lab07-03.exe과 DLL인 Lab07-03.dll을 입수했다. 이는 실행할 때마다 악성코드가 변경될 수 있기 때문에 중요하다. 두 파일 모두 피해자 시스템의 동일한 디렉토리에서 발견됐다. 프로그램을 실행한다면 두 파일이 분석 장비의 동일한 디렉토리에 위치하게 해야 한다. 127로 시작하는(루프백 주소) IP 문자열이 로컬 장비로 접속한다(실제 악성코드 버전은 이 주소가 외부 장비로 연결되겠지만 여기서는 안전하게 localhost로 접속하게 설정했다.) Lab07-03.exe의 문자열을 확인하였다. kernel32.dll과 비슷해보이는 이름인 kerne132.dll 문자열이 존재한다. 또한 Lab07-03.dll라는 문자열도 존재한다. 따라서 이러한 dl..

실전 악성코드와 멀웨어 분석 실습 7-2

파일 Lab07-02.exe에서 발견한 악성코드를 분석해보자. 1. 이 프로그램은 어떤 방식으로 지속 메커니즘을 보장하는가? 이 프로그램은 실행시키면 광고 웹 페이지를 출력하고 종료된다. 2. 이 프로그램의 목적은 무엇인가? 광고 웹 페이지를 출력시키는 것이 목적이다. OleInitialize와 CoCreateInstance로 COM 객체를 초기화하고 생성한다. 어떤 COM 기능이 사용되었는지 확인하기 위해서는 rclsid와 riid 인자의 값을 확인해야 한다. 각각 0002DF01-0000-0000-C000-000000000046과 D30C1661-CDAF-11D0-8A3E-00C04FC9E26E이다. 레지스트리의 CLSID를 확인하면 어떤 프로그램이 호출되는지 알 수 있다. 인터넷 익스플로러와 IWe..

실전 악성코드와 멀웨어 분석 실습 7-1

파일 Lab07-01.exe에서 발견한 악성코드를 분석해보자. 이 프로그램이 호출하는 함수의 목록이다. 1. 이 프로그램은 어떤 방식으로 컴퓨터가 재시작할 때마다 실행(지속 매커니즘)을 보장하는가? MalService라는 서비스를 생성하여 실행한다. 2. 이 프로그램은 왜 뮤텍스를 이용하고 있는가? OpenMutexA를 먼저 사용한 이유는 이미 생성된 뮤텍스가 있을 경우에 프로그램을 종료하여 시스템에서 실행 파일이 하나만 동작하게 설계한 것이다. 즉, 상호 배제 검증 과정이다. 3. 이 프로그램을 탐지할 때 호스트 기반으로 좋은 시그니처는 무엇인가? 위에서 확인한 Malservice라는 이름의 서비스와 HGL345라는 이름의 뮤텍스가 해당된다. 4. 이 악성코드를 탐지할 때 네트워크 기반으로 좋은 시그니..