목록Security/07 Malware Technique (18)
tmxklab
1. Intro 악성코드는 다양한 난독화(Obfuscation)기술을 통해서 탐지하거나 리버싱하기 어렵게 만들도록 한다. 일반적으로 인코딩/암호화/패킹 기술을 사용한다. 주로 다음과 같은 이유로 난독화 기술을 적용한다. C&C 통신 은닉 IDS와 같은 시그니쳐 기반 솔루션 우회 설정 파일 은닉 몰래 빼내는 정보 암호화 바이너리에 있는 문자열 은닉 등등.. 다양한 이유가 있겠지만 탐지나 분석를 어렵게 하거나 중요한 정보를 숨기기 위해서 사용한다. 2. Encoding 대부분 Base64 또는 xor 인코딩과 같은 매우 간단한 인코딩 알고리즘을 사용해 데이터를 모호하게 한다. 이렇게 간단한 알고리즘을 사용하는 이유는 구현이 쉽고 리소스를 조금 소모할 뿐만 아니라 분석가로부터 모호하게 만들 수 있기 때문이다...
0. 목차Contents0. 목차1. Hooking1.1 IAT Hooking1.2 Inline Hooking1.3 In-Memory Patching using shim1. Hooking공격자가 코드(일반적으로 DLL, 이외에도 exe파일, 쉘 코드도 사용됨)를 정상 프로세스에 인젝션하는 이유는 Target Process의 API 호출을 후킹하기 위함이다. Target Process에 코드를 인젝션하면 프로세스 메모리에 모든 권한을 가지며 해당 컴포넌트도 수정할 수 있다. 프로세스 메모리 컴포넌트를 변경할 수 있는 기능을 사용하면 IAT에 있는 항목을 교체하거나 API 함수 자체를 수정할 수 있는데 이러한 기술을 후킹(Hooking)이라고 한다. [Case Study] 루트킷의 오늘 1 : 2세대 루트킷..
0. 목차Contents0. 목차1. shim이란Example)shim 관련 자료2. DLL Injcetion을 위한 shim 생성 및 공격방법1) shim 생성 방법2) 공격 방법3) 주요 shim3. shim Artifact4. SDB 분석 1. shim이란MS에서 윈도우 애플리케이션 호환성 인프라스트럭쳐/프레임(애플리케이션 shim)은 이전 버전의 OS 에서 동작하는 프로그램이 최신 버전의 OS에서 동작하도록 하는 기능이다. 이는 애플리케이션 호환성 수정(shim)을 통해 이뤄진다. shim은 MS가 개발자에게 제공하는 것으로 개발자가 코드를 재작성하지 않고 프로그램에 수정사항을 적용하여 호환성을 유지할 수 있도록 도와준다. shim이 적용된 프로그램은 IAT에 있는 포인터를 shim 코드의 주소로..
1) DLL Injection Dropper 3-1(DLL Injection) 0. 목차 0. 목차 1. DLL Injection이란 2. DLL Injection 유형 분석 2.1 분석환경 2.2 예제 소스 코드 및 컴파일 3. 분석 3.1 정적 분석 1) sub_4010F0((int)"explorer.exe") 2) CreateToolhelp32Snapshot() 3) su.. rninche01.tistory.com 2) Process Hollowing Dropper 3-2(Process Hollowing) 0. 목차 0. 목차 1. Process Hollowing이란 2. Process Hollowing 유형 분석 2.1 분석 환경 2.2 예제 소스 코드 및 컴파일 3. 분석 3.1 정적 분석 1)..
1. SetWindowsHookEx()MS에서는 프로세스간에 주고 받는 메시지를 후킹할 수 있는 함수를 제공해주는 데 그것이 바로 SetWindowsHookEx()라는 함수이다. idHook후킹하고자 하는 메시지의 ID(메시지 유형은 msdn에서 참고)idHook 파라미터에 지정된 값의 이벤트(메시지)가 발생할 경우 훅 프로시저 동작lpfn훅 프로시저에 대한 포인터hmod훅 프로시저를 포함하는 DLL에 대한 핸들dwThreadId훅 프로시저를 호출하는 스레드 식별자0이면 모든 스레드에서 훅을 호출 SetWindowsHookEx()를 통해 우리는 특정 후크 프로시저를 후크 체인에 넣을 수 있으며, 특정 이벤트 발생 시 특정 스레드(모든 스레드가 될 수 있음)에서 훅 프로시저를 호출할 수 있게 된다. 2. ..
0. 목차 Contents 0. 목차 1. APC Injection이란 비동기 프로시저 호출 (APC) Alertable State란? QueueUserAPC 2. 동작 과정 3. APC DLL Injection 디버깅 msg.dll - 인젝션되는 DLL 4. 참고자료 1. APC Injection이란 Remote DLL Injection과 유사하지만, CreateRemoteThread()를 사용하는 대신 비동기 프로시저 호출(APC, Asynchronous Procedure Calls)을 사용해 타겟 프로세스의 스레드가 악성 DLL을 로드하도록 한다. 비동기 프로시저 호출 (APC) APC함수는 일반적으로 사용하는 parameter를 전달받아 바로 호출하는 SPC(Synchronous Procedure..
0. 목차 1. 다운로더 2. 드로퍼 3. 키로거 4. 이동식 미디어를 통한 악성코드 복제 5. 악성코드 명령 및 제어 6. 파워쉘 기반 실행 1. 다운로더(Downloader) 인터넷에서 다른 악성코드 컴포넌트를 다운로드하고 시스템에서 실행하는 프로그램 다운로드를 위해 UrlDownloadToFile() API 호출 다운로드 완료 후 ShellExecute(), WinExec(), 또는 CreateProcess() API 호출하여 다운로드한 컴포넌트 실행 2. 드로퍼(Dropper) 추가 악성코드 컴포넌트를 내부에 포함하고 있는 프로그램 실행되면 드로퍼는 악성코드 컴포넌트를 추출해 디스크에 저장 일반적으로 리소스 섹션에 추가 바이너리를 포함한다. 내장한 실행 파일을 추출하고자 FileResource()..
일반적으로 공격자는 윈도우가 재부팅되더라도 악성코드가 계속 실행되기를 바란다. 이러한 지속성을 유지하기 위해 윈도우가 시작될 때마다 악성코드를 실행할 수 있는 다양한 방법이 존재한다. 0. 목차 1. 레지스트리 2. 스케줄 작업 3. 시작 폴더 4. Winlogon 레지스트리 항목 5. 이미지 파일 실행 옵션(IEFO) 6. AppInit_DLLs 7. DLL 검색 순서 하이재킹 8. COM 하이재킹 9. 서비스 10. 지속성 탐지 11. 참고자료 1. 레지스트리 가장 일반적인 지속 메커니즘 중 하나는 run 레지스트리 키에 항목을 추가하는 것이다. 실행 레지스트리 키에 추가한 프로그램은 시스템 시작 시 실행된다. 다음은 가장 일반적인 run 레지스트리 키 목록이다. HKCU\Software\Micros..
0. 목차Contents0. 목차1. 소개1.1 배경1.2 파일리스(Fileless)기법1) AVT(Advanced Volatile Threat)2) 사용 이유3) 문제점2. 파일리스(Fileless) 공격 2.1 공격 절차2.2 Powershell 예제 및 옵션1) Powershell 실행 정책2) Powershell Oneliner Example3. 지속성(Persistence) 3.1 지속성 전략1) 레지스트리2) 서비스3) 작업 스케쥴러4) WMI4. 대응 방안5. 참고자료5.1 Fileless5.2 powershell 옵션에 관한 것 1. 소개1.1 배경공격자는 네트워크를 통해 직접 접근이 어려운 경우 이메일이나 인터넷을 통해 악성 파일을 유입시키는 방법을 선택하게 된다. 이에 대응하기 위해 악..
0. 목차Contents0. 목차1. 소개1.1 UAC(User Account Control)1.2 UAC Bypass2. UAC 우회 악성코드 유형 분석2.1 분석환경3. 분석3.1 정적 분석1) TOKEN_ELEVATION_TYPE 확인 및 분기2) 레지스트리 키 생성 및 ComputerDefaults.exe 실행3.2 동적 분석1) TOKEN_ELEVATION_TYPE 확인 및 분기2) 레지스트리 키 생성 및 ComputerDefaults.exe 실행4. 정리4.1 몰랐던 내용4.2 레지스트리 관련 API 함수 정리1) RegOpenKeyExA()2) RegCreateKeyA()3) RegSetValueExA()4) RegDeleteKeyA()5) RegCloseKey()5. 참고자료5.1 UAC ..