Digital Forensic For CTF
O 개요
- 전자증거물 등을 사법기관에 제출하기 위해 수행되는 데이터의 수집/분석/보고서를 작성하는 일련의 작업
O 주요내용(CTF)
- 데이터의 수집
n 휘발성은 물리적 메모리 정보 획득/비휘발성은 상태정보 획득
l Dd,memdu,dc3dd 활용난해로 vmware의 vmem 등 이미지 제공
순서 |
CTF Technque |
시스템 정보 수집 |
Date, hostname, whoami, logname, id, sar, printenv, service, history |
네트워크 정보 수집 |
Ifconfig, uptime, uname, /proc/*, netstat, ss, arp |
사용자 정보 수집 |
who |
프로세스 정보 수집 |
Ps, top, pidstat, whereis, pmap, pcat, lsof, fuser, Pslist,pstree, iostat, procinfo, lsmod. Modinfi, modprobe |
휘발성 정보 수집 |
/proc/pid/cmdline, cwd,environ,exe,fd,status xclip |
로그 정보 수집 |
Last, lastlog, syslog |
|
|
- 데이터의 분석
n 메모리 분석 시 수집목록
디스크에 존재하지 않는 웹페이지, 문서, 파일 조각 |
리눅스 커맨드 라인 명령 |
사용자 정보 |
이메일 주소와 메시지 |
검색엔진 질의를 포함한 url |
삭제된 파일 전체 항목 |
페이로드를 포함하는 IP 패킷 |
프로세스,쓰레드 그 외 정보 |
- 데이터의 분석도구
n CPU 연산 처리를 위해 필연적 메모리에 Data 적재
n Volatility (메모리 분석 도구)
l OS->Process->Network->DLL, Thread->String->Etc 순차적 분석
l Python ./vol –f file option
명령 |
설명 |
imageinfo |
메모리 덤프의 정보출력 |
Procexedump 등 |
Win32 프로세스의 바이너리 형태 출력 등 |
yara |
메모리내 string 검색 |
malfind |
메모리내 악성코드 패턴 탐지 |
Linux_find_file |
메모리내 특정 리눅스 파일 파일로 저장 |
l ./vol –f test.raw imageinfo 정보수집
l ./vol –f file procexedump –D /root/ -p 777: Keyfile 추출
l ~ yarascan –-yara-rules=”.cn” –p 777: 메모리 내 string 추출
l ~ malfind –p 777: 메모리 내 string 추출
O Process - Linux_ps_list,linux_psaux,linux_pstree,linux_psxview, linux_lsof - Linux_memmap,linux_proc_maps,linux_dump,linux_bash O Kernel, Object - Linux_lsmod, linux_tmpfs,linux_check_afinfo,linux_check_syscall O Network - Linux_arp, linux_ifconfig, linux_netstat O Information - Linux_cpuinfo,linux_iomem,linux_mount,linux_find_file |
n 파일의 분석
l Checksum(md5deep) 확인 후 정적/동적 분석 수행
l File 시그너처 확인(Linux는 첫 4Byte 중요)
- od –xc file | head, file 명령어 사용
- http://file-extension.net/seeker/
l 파일 분석 자동화 서비스
- Win32: https://anubis.iseclab.org, Linux: cuckoosandbox
- 실행압축 없을 시 중요정보 수집
n 의미 있는 내용추출: 문자열, 심볼릭 정보, 파일메타 데이터
l 문자열 분석: strings –a file > strfile.txt
l 파일 의존성검사: 정적링크 또는 동적링크
- 정적은 해당 파일만 분석, 동적은 동적라이브러리 포함 분석
- ldd –v file
- nm –al file
n 난독화: 분석방해, 보안시스템 우회
l 패킹: 실행파일을 압축 -> 대다수 파일의 끝부분에 STUB 구성
- Entrypoint를 정상->패킹STUB: 정상 Entrypoint를 찾고 수정
- Linux용 Packer는 디버깅 및 심볼 정보 제거 목적
l 암호화: 실행파일에 암호화 알고리즘 적용->STUB 복호화 알고리즘
- Memory 에 로딩 후 복호화 알고리즘 재 구성
l Wrapper: 실행파일에 다중 보호 계층 추가
- Unwrapper 활용, 없을 시 Fenris
* ELF파일의 Entrypoint가 0x0804+4byte가 아닐 경우 이상파일 추정이 가능하며 readelf –h file로 확인 *
n ELF 형식
l ELF파일 포맷 구조: /usr/include/elf.h
l 섹션헤더테이블과 연계된 섹션: 링킹
l 실행파일메모리로딩: 프로그램 헤더와 세그먼트 포함
l ELF 섹션(readelf –section-header file, --program-headers, --syms)
섹션 |
설명 |
.rodata |
읽기 전용 데이터 |
.dynsym |
동적 링킹 정보 |
.symtab |
심볼테이블 |
.debug |
심볼 디보깅 정보 |
.dynstr |
동적 링킹 문자열 정보 |
.strtab |
심볼 테이블 값과 이름 |
.text |
프로그램의 실행 명령어 |
l ELF 파일의 직접적인 분석(.rodata에 유의미한 정보)
- readelf –-hex-dump\=sectionnumber file
'잡다' 카테고리의 다른 글
PenetrationTest For CTF (0) | 2021.01.18 |
---|---|
ltrace (0) | 2021.01.18 |
CTF 문제 (0) | 2021.01.18 |
If it's not fun, why do it? (0) | 2021.01.04 |
돼 되 구분 (0) | 2021.01.03 |