목록Security/Volatility (12)
tmxklab
후킹의 목적은 정상 API 호출을 차단하여 API에 전달되는 파라미터를 모니터링하거나 API에서 반환되는 값을 필터하는 것이다. 공격자가 악성 커널 드라이버를 설치하여 커널 공간에서 후킹을 시도할 수 있다. 커널 컴포넌트가 시스템 작동에 매우 중요한 역할을 하기 때문에 커널 공간에서 후킹은 유저 공간에서 후킹하는 것보다 강력하다. 따라서, 커널 공간에서 이루어지는 다양한 후킹 기술과 탐지 방법을 살펴보자 1. SSDT 후킹 커널 공간에 존재하는 SSDT(System Service Descriptor Table)은 커널 익스큐티브(ntoskrnl.exe, ntkrnlpa.exe 등)에서 export한 서비스 루틴의 포인터를 포함한다. Window API 호출 흐름 0. 목차 1. 커널 메모리 내용 2. 유..
참고) I/O 관련 작업(Device Driver, I/O Manager) 여기서 다루는 내용은 Device Driver와 I/O Manager에 중점을 둔다. 다음 그림은 유저단에서 WriteFile() API 함수를 호출했을 때 I/O Manager와 Device Drvier가 처리하는 과정이다. syscall(x64) 또는 sysenter.. rninche01.tistory.com 1) devocetree 플러그인 Device Tree정보를 확인 vol_2.6.exe -f --profile= devicetree 2) driverirp 플러그인 특정 드라이버 또는 모든 드라이버와 관련된 주요 IRP 함수를 표시 vol_2.6.exe -f --profile= driverirp -r -r옵션을 지정하지 ..
1. kernel mode rootkit 루트킷과 같은 프로그램은 커널 드라이버를 커널 모드에서 코드를 실행할 수 있음 커널 공간에 실행되면 내부 OS 코드에 접근하여 시스템 이벤트의 모니터링, 함수 후킹, 호출 테이블 수정 등 가능 커널 드라이버는 드라이버 서비스 유형의 서비스를 생성할 때 로드 커널 드라이버는 .sys확장자를 가지며 %windir%/system32/drivers에 존재 일반적으로 루트킷은 유저 모드 컴포넌트(EXE or DLL)와 커널 모드 컴포넌트(Device Driver)로 구성되며 루트킷의 유저 모드 컴포넌트는 지정된 메커니즘을 통해 커널 모드 컴포넌트와 통신한다. 통신 방법과 관련 컴포넌트를 이해하기 위해서 다음 링크를 참고하자 관련 보호기법) ① 커널 모드 코드 서명(KMCS..
인젝션한 후 악성코드는 타겟 프로세스의 API호출을 후킹해 실행 경로를 제어하여 악성코드로 재설정할 수 있다. 프로세스와 커널 메모리에서 API 후킹을 식별하고자 apihooks 플러그인을 사용한다. vol_2.6.exe -f --profile= apihooks -p Hook mode(kernel, user mode) / Hook Type(후킹 유형 : IAT, Inline, 등등...)확인할 수 있음 순서) 1) malfind 플러그인을 사용하여 인젝션된 코드를 탐지한다. 2) apihooks 플러그인을 사용하여 JMP가 인젝션된 실행 파일 내의 주소로 리다이렉션하는지 확인한다.
Process Hollowing 먼저, 프로세스 할로윙에 대한 개념을 살펴보기 위해서 다음 링크를 참고하자 Dropper 3-2(Process Hollowing) 0. 목차 0. 목차 1. Process Hollowing이란 2. Process Hollowing 유형 분석 2.1 분석 환경 2.2 예제 소스 코드 및 컴파일 3. 분석 3.1 정적 분석 1) CreateProcessA() 2) CreateFileA(ExeName, 0x80000000, 1, 0,.. rninche01.tistory.com Process Hollowing 순서) ① CreateProcess - 인젝션할 프로세스를 일시 중지된 상태로 생성한다. ② NtUnmapViewOfSection - 섹션 매핑 해제 ③ VirtualAll..
코드 인젝션 코드 인젝션은 정상 프로세스 메모리에 악성코드(pe파일, 쉘 코드, dll 등)을 인젝션하고 정상 프로세스의 콘텍스트 안에서 인젝션한 악성코드를 실행하는 기술이다. 코드를 인젝션하고자 일반적으로 RWX권한(PAGE_EXECUTE_READWRITE)의 메모리를 할당한 다음 할당된 메모리에 코드를 인젝션한다. 위 코드 인젝션의 특징에 기반해 RWX권한을 가지는 메모리 내용을 통해 의심스러운 메모리 범위를 탐지하는데 여기서 이전에 volatility plugin에서 dll조사를 하는 부분에서 VAD(Virtual Address Descriptors)를 이용할 것이다. [Volatility] DLL 조사 1. dlllist 플러그인 로드된 DLL을 나열, DKOM 공격에 취약 dlllist플러그인은..
cmdscan, consoles 플러그인 명령어 히스토리 조사 명령어 히스토리를 조사함으로써 실행된 명령어, 호출한 프로그램, 공격자가 접근한 파일과 폴더와 같은 정보 파악할 수 있음 cmdscan 플러그인은 cmd.exe가 실행한 명령을 나열 consoles 플러그인은 명령이 성공했는지 안했는지 알 수 있다. vol_2.6.exe -f --profile= cmdscan vol_2.6.exe -f --profile= consoles 공격자는 시스템에 침투한 후 다양한 명령어를 실행할 수 있다. 예를 들면 미미카츠와 같은 도구를 사용하여 윈도우 계정정보를 얻어올 수 있다. 미미카츠 관련자료) [Tool] mimikatz를 이용하여 윈도우 계정 정보 알아내기 일반적으로 윈도우 해킹 시 계정정보를 알아오기 위..
svcscan 플러그인 서비스 조사 서비스와 해당 서비스의 이름, 유형, 시작 유형과 같은 정보 나열 vol_2.6.exe -f --profile= svcscan 추가로 -v옵션을 주면 DLL로 구현된 서비스의 전체 경로를 표시할 수 있다. 하지만 지속 메커니즘 중에 새로운 서비스를 생성하지 않고 기존의 정상적인 서비스를 수정하여 목표를 달성할 수 있다. BlackEnergy 드로퍼의 예로 실행 시 system32\\drivers 디렉터리에 있는 aliide.sys라는 정상 드라이버를 악의적인 aliide.sys 드라이버로 대체하고 aliide서비스와 관련된 레지스트리 항목을 수정하고 마지막으로 자동시작되도록 설정한다. 악성코드 지속메커니즘 일반적으로 공격자는 윈도우가 재부팅되더라도 악성코드가 계속 실행..
1. printkey 하이브 파일 내부에 존재하는 서브 키 검색 레지스트리 키, 하위 키, 값을 출력하려면 -K옵션 사용 vol_2.6.exe -f --profile= printkey -K 2. hivelist 메모리에 존재하는 하이브 파일 목록 출력(가상+물리주소) vol_2.6.exe -f --profile= hivelist 3. userassist, shellbags, shimcache 플러그인 이진 데이터를 포함한 레지스트리 키를 파싱하고 훨씬 더 읽기 쉬운 형식으로 정보 표시 userassist 플러그인 : userassist 레지스트리 정보 출력, userassist키는 시스템에서 유저가 실행한 적이 있는 프로그램과 프로그램이 실행된 시간에 대한 목록을 포함한다 shimcache 플러그인 : ..
대부분 악성코드는 추가적으로 컴포넌트를 다운로드하거나 명령을 전달받거나 등등 네트워크 활동을 진행한다. 이러한 네트워크 활동을 조사함으로써 악성코드의 네트워크 활동을 파악하고 실행 중인 프로세스와 네트워크에서 탐지한 활동을 연관시켜 유의미한 결과를 얻을 수 있다. 1. connections 플러그인 이전 비스타 시스템(Windows XP, 2003)에서 활성 네트워크 연결 파악 pslist 방식 vol_2.6.exe -f --profile= connections 2. connscan 플러그인 이전 비스타 시스템(Windows XP, 2003)에서 활성 네트워크 연결 파악 풀 태그 스캐닝 방식을 사용해 연결을 파악 -> 종료된 연결까지 파악 가능하다. vol_2.6.exe -f --profile= conn..