목록분류 전체보기 (285)
tmxklab
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..
1. dlllist 플러그인 로드된 DLL을 나열, DKOM 공격에 취약 dlllist플러그인은 PEB구조체를 찾아서 로드한 모듈 정보를 얻는다. _EPROCESS구조체에 PEB포인터를 포함하는 peb라는 필드를 가지고 있음 따라서, _EPROCESS구조체를 찾으면 PEB를 찾을 수 있음 vol_2.6.exe -f --profile= dlllist -p옵션을 사용하여 pid값을 줘서 해당 프로세스에 로드된 모듈들을 확인할 수 있음 이제 커널 디버깅을 통해서 dlllist 플러그인이 어떻게 dll목록을 가져오는지 확인해보자 먼저 현재 실행 중인 "explorer.exe"프로세스를 대상으로 확인해보자 explorer.exe의 _EPROCESS구조체 주소는 0xffffe2897d03d080이며 peb값은 0x..
1. pslit 플러그인 프로세스 리스트 출력(리스트워킹-가상주소) Double Linked List 탐색에 의존 DKOM 탐지 못함 vol_2.6.exe -f --profile= pslist [ pslist 도움말 확인 ] vol_2.6.exe -f "IE11 - Win7 (2)-462275e1.vmem" --profile=Win7SP0x86 pslist -h [ 출력 결과 리다이렉션 ] vol_2.6.exe -f "IE11 - Win7 (2)-462275e1.vmem" --profile=Win7SP0x86 pslist --output-file=result.txt 프로세스들은 Double Linked List구조로 되어있음, 다음 링크를 통해 참고하자 윈도우 프로세스(프로세스 관련) 윈도우 OS는 객체..