전체 글(324)
-
파일 시스템 개념 정리
[1] NTFSNTFS New Technology File System파일 시스템이란 디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식파일이 어디에 저장되어 있는지 조직화하고 사용자의 데이터를 구조적으로 정의하도록 한다파일을 빠르게 읽기, 쓰기, 삭제 등의 기본적인 기능을 원할히 수행하도록 도와주며, 커널영역에서 동작한다 디스크 - 논리디스크와 물리디스크로 나뉜다 논리디스크( C:\ ) - NTFS물리디스크 - 하드디스크 cluster - 여러개의 sector를 모아서 만든 논리적인 저장 단위윈도우는 클러스터 단위로 파일을 저장한다클러스터는 디스크의 용량에 따라서 크기가 다르다디스크의 용량과 클러스터의 단위의 차이로 인해서 슬랙공간이 생성된다 대부분의 NTFS에서는 4KB(4096..
2018.07.05 -
악성코드 유출사례 ( DBD 실습 )
Drive By Download (DBD)웹 사이트를 방문하거나 이메일 메시지를 볼 때 또는 유혹하는 팝업 윈도우를 클릭할 때 발생한다해커들은 악의적인 코드를 숨기기 위해 다양한 기법들을 사용해서, 바이러스 검사 소프트웨어가 인식하지 못하게 한다. 이 코드는 숨겨진 iframes에서 실행되며 탐지가 되지 않을 수 있다. [ 실습 ]InternetExplorer version6 & 8을 사용한다희생자 서버 : winXP에서 APM을 통해 생성한 wordpress서버( 10.0.2.15 )공격자 서버 : 칼리리눅스 [1] 실습을 위해 취약점이 존재하는 서버를 하나 생성한다 - APM 설치 -> Apache & PHP & MySQL 모두 설치하는 통합 프로그램- 먼저 서버의 DB에 wordpres DB를 생성..
2018.06.12 -
Memory Forensic [ OS란 ? ]
Memory Forensic컴퓨터 하드웨어 중 주기억장치(메모리)에 존재하는 휘발성 데이터를 덤프분석프로세스 정보, 네트워크 연결정보, 악성코드 파일정보 등등 * memory dump - 물리 메모리에 존재하는 모든 흔적을 확인할 수 있음 OS ? 하드웨어의 조작을 위한 매개체OS는 시스템 하드웨어를 관리하고 응용소프트웨어를 실행하기 위해 하드웨어 추상화 플랫폼과 공통시스템 서비스를 제공하는 시스템 소프트웨어이다 Kernel ?운영체제의 핵심부분운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공하드웨어의 추상화 기능적인 요소① 프로세스 관리모든 스레드와 프로세스에 대한 정보는 메모리상의 데이터 구조체에 의해서 유지 및 관리 ② 파일 접근디바이스 드라이버에 의해서 각종 파일시스템이..
2018.05.23 -
하이브리드 후킹 ( Kernel을 이용한 User IAT 후킹 )
Hybrid Hooking 커널에서 유저쪽의 IAT를 후킹한다대략적인 순서는 먼저 Callback함수를 등록한다 ( sys파일등록 )=> 유저쪽의 이미지 파일이 실행될 때 커널에 알리도록 notify를 발생시킨다그리고 해당 이미지 파일의 이름을 확인하고 후킹을 설치한다IAT Hooking은 MDL을 이용한 WriteProtection을 해제하고 공유메모리를 이용한다 * MDL ( Memory Descriptor List )NonpagedPool에 MDL 생성생성된 MDL은 보호받는 메모리영역을 가르킨다보호플래그를 변경하고 해당 메모리 영역에 데이터를 쓴다다시 원상태로 복구 * 공유메모리 - KUSER_SHARE_DATA유저와 커널이 공유하는 데이터 영역 후킹 코드12345678910111213141516..
2018.05.21 -
DeviceDriver MajorFunction 후킹 [ netstat ]
DeviceDriver는 로드되면서 여러 형태의 IRP ( I/O Request Packet ) 를 처리하기위한 함수리스트를 초기화한다MajorFunctionTable을 이용해서 여러 MajorFunction들의 주소를 관리한다 ( -> 변조할 함수의 해당 주소를 찾아내어 변조한다 )드라이버는 시스템의 매우 낮은 레벨에서 동작하기 때문에 후킹하기 적절한 장소이다 * DeviceObject 검색 -> DriverObject 검색 -> MajorFunctionTable - MajorFunction 변조 의 순으로 후킹이 진행된다* DeviceObject내에 DriverObject주소가 존재* DriverObject에는 MajorFunctionTable이 존재하고 Table에는 해당장치에 관련된 MajorFu..
2018.05.15 -
RootKit [ SSDT Hooking 실습]
SSDT Hooking SSDT ? System Service Descriptor Table커널에 존재하는 함수들을 관리하는 테이블커널 모드 함수들에 대한 포인터를 제공 * 함수 호출 순서사용자 모드에서 함수 호출 -> kernel32.dll -> 내부적으로 ntdll.dll호출 -> SYSENTER - 커널과 통신 시작-> 커널의 Hal.dll을 통해서 I/O와 통신한다 ( DeviceDriver ) * SYSTENER ?EAX, EDX 레지스터를 이용해서 SSDT와 통신한다 ( EAX : 함수 지칭 & EDX : Parameter지정 )EAX레지스터에는 함수의 주소EDX레지스터에는 Parameter가 존재하는 사용자모드의 주소 다음은 시스템 프로세스 레코드의 구조 및 SSDT후킹의 원리이다숨기고자하는..
2018.05.13 -
RootKit [ DeviceDriver 개념 및 설치실습]
RootKit침투를 성공한 공격자가 은밀하게 침투한 상태를 유지하도록 도와주는 프로그램 4가지 기능- 프로세스 숨기기- 파일 숨기기- 네트워크 커넥션 숨기기- 시스템에 접속하기 위한 백도어 설치 * RootKit은 커널의 DeviceDriver를 통해서 동작한다* RootKit을 공부하기 전에 DeviceDriver에 대해서 공부하자 DeviceDriver란 ?- load가능한 커널모드 모듈형태 ( .sys )- I/O관리자와 관련 하드웨어를 인터페이스로 연결한다- 커널내에 존재하여, Hal.dll을 통해서 하드웨어와 조작 및 통신- 컴퓨터 하드웨어 장치와 상호작용하기 위해 만들어진 컴퓨터 프로그램- 커널 전체 소스에 포함되어 컴파일 되기도하고, 별도로 컴파일된 (sys파일)형태로 존재할 수 있다- dl..
2018.05.13 -
Windows Message Hooking ( 키보드입력 후킹 실습 )
* 메모장에서 키보드 입력하려는 것을 후킹하여 메모장에서 키보드 입력이 먹히지 않도록 하는 실습 [ KeyHook Code ]KeyHook.cpp 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include "stdio.h"#include "windows.h" #define DEF_PROCESS_NAME "notepad.exe" HINSTANCE g_hInstance = NULL;HHOOK g_hHook = NULL;HWND g_hWnd = NULL; BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWO..
2018.05.10 -
Windows Message Hooking ( KeyLogger 실습 )
WindowMessageHooking - 키보드나 마우스의 입력을 후킹한다[ Key -> OS -> Application ] => [ Key -> OS -> Hooker -> Application ] KeyLogger 실습CPP타입의 키로거 파일을 비쥬얼베이직으로 Release하여서 실행가능한 파일로 생성해야한다[ Release 순서 ]New Project - Win32 Console Application Console application & Empty project 헤더파일과 소스파일을 구분하여 파일을 옮긴 다음 Release를 실행해야한다" F7 " => Release => 실행가능한 파일로 생성된다 [ KeyLogger Source Code ][1] keys.cpp - 입력내용을 검사하는 함수 등..
2018.05.10 -
악성코드 분석 실습 ( Lab07_03 ) [ DLL 변조]
[ 기초 정적분석 ] Lab07-03.exe패킹의 흔적은 없고, KERNERL32.dll 과 MSVCRT.dll을 import한다 File과 관련된 메서드들을 사용하고 있다 의심스러운 문자열로는 " kerne132.dll " , " Lab07-03.dll " , " C:\* " 이 확인된다 Lab07-03.dllKERNEL32.dll 과 WS2_32.dll을 임포트하고 있다 WS2_32.dll : 소켓통신과 관련된 dll [ 기초 동적분석 ]Lab07-03.exe를 실행시키고 변경되어지는 시스템들을 확인해보자API에서 특별히 이상한 낌새를 보이는 부분은 보이지 않는다디렉터리에 접근하는 부분도 특별히 이상은 없었다 [ 고급 정적분석 ]Lab07-03.dll 분석OpenMutexA & CreateMutexA..
2018.05.03