전체 글 191

디지털포렌식

저널링(jounaling) 데이터 변경을 디스크에 반영하기 전에 행위를 기록하여 추후 오류 복구에 활용 • 데이터를 기록하는 동안 시스템에 문제가 생기면 데이터가 손실됨 • 문제가 발생하기 전에 “어떤 데이터를, 언제, 어디에 쓰는지” 기록 • 문제가 발생하면 기록을 토대로 작업이 이루어지기 전 상태로 시스템을 복원 트랜잭션(Transaction) "쪼갤 수 없는 업무 처리의 최소 단위” 파일이나 디렉토리 생성, 수정, 삭제, MFT 레코드 변경 등 $LogFile : 메타데이터의 트랜잭션 저널 정보 $UsnJrnl • 파일이나 디렉토리에 변경 사항이 생길 때 이를 기록하는 로그 파일 • 파일 복원의 목적이 아니라, 단순 파일 작업이 있었다는 사실을 확인하기 위함 • 시간 순서대로 엔트리를 저장하고, 기..

카테고리 없음 2022.07.31

드림핵 stage12 Memory Corruption: Double Free Bug

free 함수로 청크 해제 -> ptmalloc2는 이것을 tcache나 bins에 추가 후 관리 이후 비슷한 크기의 malloc 발생 시 연결리스트 탐색해 청크 재할당 청크 duplicated : 청크가 freelist(tcache,bins)에 중복 존재 duplicated free list를 이용하면 임의 주소에 청크를 할당할 수 있음 Double Free Bug 같은 청크를 두 번 해제할 수 있는 버그 ptmalloc2에서 발생 공격자에게 임의 주소 쓰기, 임의 주소 읽기, 임의 코드 실행, 서비스 거부 등의 수단으로 활용될 수 있 Dangling Pointer는 Double Free Bug를 유발하는 대표적인 원인 ptmalloc2에서, free list의 각 청크들은 fd와 bk로 연결 어떤 청..

카테고리 없음 2022.07.31

드림핵 stage12 ptmalloc2

운영체제의 핵심 역할 중 하나는 한정된 메모리 자원을 각 프로세스에 효율적으로 배분하는 일입니다. 모든 프로세스는 실행 중에 메모리를 동적으로 할당하고, 할당한 메모리의 쓰임이 다하면 이를 해제합니다. 이 과정은 매우 빈번하게 일어납니다. 그래서 운영체제의는 이 동작이 빠르고, 메모리의 낭비 없이 이뤄지도록 특수한 알고리즘으로 구현됩니다. Memory Allocator 프로세스 실행 중 메모리 동적 할당, 사용 후 할당 해제 과정을 빠르고 메모리 낭비 없이 이루어지도록 특수 알고리즘으로 구현되는 것 구현에 사용된 알고리즘에 따라 여러 종류 존재 리눅스는 ptmalloc2, 구글은 tcmalloc, 페이스북이나 파이어폭스는 jemalloc을 사용 ptmalloc2동적 메모리 관리하는 리눅스 핵심 알고리즘메..

카테고리 없음 2022.07.31

DreamHack stage 9_Memory Corruption: Out of Bounds

배열은 같은 자료형의 요소(Element)들로 이루어짐 각 요소의 위치 = 인덱스(Index) 배열의 임의 인덱스에 접근할 수 있는 Out of Bounds (OOB) 가 취약점 OOB 요소를 참조할 때, 인덱스 값이 음수이거나 배열의 길이를 벗어날 때 발생 인덱스 범위 검사 명시적으로 프로그래밍하지 않으면, 프로세스는 계산한 주소가 배열의 범위 안에 있는지 검사하지 않음 만약 사용자가 배열 참조에 사용되는 인덱스를 임의 값으로 설정할 수 있다면, 배열의 주소로부터 특정 오프셋에 있는 메모리의 값을 참조할 수 있음 임의 주소 읽기 OOB로 임의 주소의 값을 읽으려면, 읽으려는 변수와 배열의 오프셋 알아야 함 배열, 변수가 같은 세그먼트에 할당됨 -> 둘 사이의 오프셋은 항상 일정(디버깅 통해 파악) 같은..

드림핵 stage7 Bypass NX & ASLR

Address Space Layout Randomization(ASLR) 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법 ASLR은 커널에서 지원하는 보호 기법 메모리를 무작위 주소에 할당하는 보호 기법. 최신 커널들은 대부분 적용되어 있음. 리눅스에서는 페이지 단위로 할당이 이루어지므로 하위 12비트는 변하지 않는다는 특징이 있음. ASLR 확인 명령어 : cat /proc/sys/kernel/randomize_va_space 위 명령 실행 결과 0,1,2 결과값 가짐 No ASLR(0): ASLR을 적용하지 않음 Conservative Randomization(1): 스택, 힙, 라이브러리, vdso 등 Conservative Randomization + ..

카테고리 없음 2022.07.24

프로그램 실행 시 Segment 에서는

프로그램 실행 -> 프로세스가 메모리에 적재 -> 메모리와 레지스터 동작 위 과정에 대해 알아보기 위해 간단한 프로그램 동작 분석 1 2 3 4 5 6 7 8 9 10 //simple.c void function(int a, int b, int c){ char buffer1[15]; char buffer2[10]; } void main(){ function(1,2,3); } Colored by Color Scripter cs gcc -S -o simple.asm simple.c : 위 c 프로그램을 어셈블리 코드로 컴파일 gcc -o simple simple.c : 위 c 프로그램을 실행파일로 컴파일 gdb로 열어 어셈블리어로 프로그램 분석 ESP는 프로그램 처음 시작 시 스택 맨 꼭대기를 가리키고 있음..

OlympicDestroyer - Volatility Contest 2018 문제풀이 정리

1. 시나리오 분석 악성코드 공격으로 평창올림픽 사이트가 중단된 사고가 실재했음 올림픽 담당자가 수신한 일정 업데이트 메일에 첨부된 파일 Olympic_Session_V10을 다운받고 실행함으로써 악성코드에 감염되었을것으로 보임 2. 시나리오에서 얻은 단서를 바탕으로 volatility 분석 시작 이미지 파일 폴더로 이동해 imageinfo로 운영체제 확인 분석 위한 log 파일들 생성 pstree.log파일에서 OlympicDestroy 프로세스 확인 정상 프로세스인 svchost에서 하위에 생성되는 프로세스들의 목록이 수상해보임 액셀을 통한 침입인 경우 위와 같은 마이크로소프트 오피스 관련 프로세스도 눈여겨 봐야 함 작업 스케줄러 프로세스는 악성코드가 침입하여 악성 프로그램을 작업스케줄러에 등록한 뒤..

CTF-d GrrCon 문제 풀이 정리

운영체제 식별결과 : Win7SP1X86 프로세스 검색 결과 : 의심스러운 프로세스들 발견 Teamviewer 관련 프로세스 (tv_w32.exe) explorer 하위 프로세스 (mstsc.exe(원격 접속), OUTLOOK.exe(메일)) 인터넷 익스플로러(iexplorer.exe, cmd.exe) -> cmd가 달려있는 기형적인 모양 네트워크 분석결과 : 공격자로 추정되는 IP : 180.76.254.120:22 PID : 2996(iexplorer.exe) cmd 분석 결과 : cmdline 결과 tv_w32.exe가 수상해 조사해보니 정상 프로세스로 확인됨 cmdscan, consoles 결과 악성 실행파일 wce.exe 발견 파일 분석 결과 : wce.exe : 관리자 계정을 포함하여 패스워드..

Volatility Cridex 풀이 정리

운영체제 식별 결과 : WinXPSP2x86 프로세스 검색 결과 : reader_sl.exe(1640)가 수상한 프로세스로 보임 네트워크 분석 결과 : reader_sl.exe의 PID를 가진 줄에서 공격자 IP로 보이는 41.168.5.140:8080 확인 PID : 1484(explorer.exe) cmd 분석 결과 : 특이사항 없음 파일 분석 및 덤프 : filecan 결과 reader_sl.exe 추출 dumpfiles 이용하여 추출 -> virustoal에 검색 -> 확실히 바이러스라고 보기에는 애매한 결과 얻음 프로세스 세부 분석 : procdump 이용하여 reader_sl.exe 실행파일 추출 -> virustoal에 검색 -> 악성코드 판정 memdump 이용하여 reader_sl.exe..

Volatility 명령어 정리

Volatility 메모리 포렌식 도구, 오픈소스, CLI 인터페이스 버전 3까지 공개되었으나 아직 버전2를 많이 사용함 이 도구로 증거를 획득할 수 있는 이유 : 메모리에 올라온 프로세스 정보를 가져와 분석할 수 있음 명령어 목록 - 운영체제 식별 imageinfo : 메모리 덤프의 운영체제를 식별 - 프로세스 검색 pslist : 시간 순서대로 보여줌 psscan : 숨겨진 프로세스 출력 가능 pstree : PID, PPID 기준으로 구조화하여 보여줌 psxview : pslist, psscan을 포함한 도구들의 결과를 한 눈에 볼 수 있음 - 네트워크 분석 netscan : windows 7 이상 TCP, UDP 통신 조회 / IPv4, IPv46 지원 socket listening, establ..