1) 컴퓨터 부팅 시간이 언제냐?
2) 진짜 사용자는 누구냐?
3) 무슨 사이트에 접속했냐?
4) 무슨 파일을 받았냐?
5) 파일을 실행했냐?
리눅스 > 로그 분석
윈도우 > 이벤트,레지스트리,약간의 로그
windows > system32 > config
5개의 레지스트리 파일
SAM
SECURITY
SOFTWARE
SYSTEM
DEFAULT
SAM > Domains > Account > Users > 000003E8
manager
RID(Relative Identifier): 비교 식별 값
F (Fixed format): 고정적 형식
V: (Variable format): 유동적 형식
F값 :
02 00 01 00 00 00 00 00 35 72
E9 A1 38 78 DB 01 00 00 00 00
00 00 00 00 58 54 D7 7C E4 33
D6 01 FF FF FF FF FF FF FF 7F
00 00 00 00 00 00 00 00 E8 03
00 00 01 02 00 00 14 02 00 00
00 00 00 00 00 00 3A 00 01 00
00 00 00 00 21 01 00 00 00 00
02 00 01 00 00 00 00 00 35 72 E9 A1 38 78 DB 01
00 00 00 00 00 00 00 00 58 54 D7 7C E4 33 D6 01
FF FF FF FF FF FF FF 7F 00 00 00 00 00 00 00 00
E8 03 00 00 01 02 00 00 14 02 00 00 00 00 00 00
00 00 3A 00 01 00 00 00 00 00 21 01 00 00 00 00
마지막 로그인 시각 : 8~15
마지막 패스워드 변경 시각 : 24~31
마지막 실패 로그인 시각 : 40~47
로그온 회수 : 66:67
from datetime import datetime, timedelta
# 주어진 16진수 데이터
hex_data = "02 00 01 00 00 00 00 00 35 72 E9 A1 38 78 DB 01 00 00 00 00 00 00 00 00 58 54 D7 7C E4 33 D6 01 FF FF FF FF FF FF FF 7F 00 00 00 00 00 00 00 00 E8 03 00 00 01 02 00 00 14 02 00 00 00 00 00 00 00 00 3A 00 01 00 00 00 00 00 21 01 00 00 00 00 67 68 00 00 00 00 00 00"
# 두 16진수 값 추출
first_value_hex = ''.join(hex_data.split()[8:16]) # 35 72 E9 A1 38 78 DB 01
second_value_hex = ''.join(hex_data.split()[24:32]) # 58 54 D7 7C E4 33 D6 01
logon_value_hex = ''.join(hex_data.split()[66:67]) # 3A 00
# 16진수 값을 부호 없는 정수로 변환 (unsigned integer)
def hex_to_signed_int(hex_value):
reversed_hex_value = ''.join([hex_value[i:i+2] for i in range(0, len(hex_value), 2)][::-1])
unsigned_value = int(reversed_hex_value, 16)
if unsigned_value >= 2**63:
signed_value = unsigned_value - 2**64
else:
signed_value = unsigned_value
return signed_value
# Windows 파일 시간 계산
def windows_time_from_signed_int(signed_value):
# 100나노초 단위로, 이를 초 단위로 변환
seconds_since_windows_epoch = signed_value / 10**7
# Windows 파일 시간 기준 1601년 1월 1일
windows_epoch = datetime(1601, 1, 1)
# 초 단위로 변환 후 해당 시간 계산
windows_datetime = windows_epoch + timedelta(seconds=seconds_since_windows_epoch)
return windows_datetime
# 첫 번째 값 (35 72 E9 A1 38 78 DB 01) 처리
first_signed_value = hex_to_signed_int(first_value_hex)
first_windows_datetime = windows_time_from_signed_int(first_signed_value)
# 두 번째 값 (58 54 D7 7C E4 33 D6 01) 처리
second_signed_value = hex_to_signed_int(second_value_hex)
second_windows_datetime = windows_time_from_signed_int(second_signed_value)
# 로그인 횟수 처리
logon_count = hex_to_signed_int(logon_value_hex)
# 결과 출력
print(f"마지막 로그인: {first_windows_datetime}")
print(f"마지막 패스워드 변경 시각: {second_windows_datetime}")
print(f"로그온 횟수: {logon_count}")
SOFTWARE의 시간 기준은 유닉스 시간 기준
SOFTWARE 하이브에서 유닉스 시간 방식을 사용하는 이유는,
Windows가 다양한 외부 프로그램이나 호환성 있는 시스템과 상호작용할 때 유닉스 시간을 사용하는 경우가 많기 때문입니다.
시스템 설치 시간알아보기 > SOFTWARE > Microsoft > Windows NT > CurrentVersion
설치 시간 : InstallDate : 0x5ECDF569 (1590556009)
주인 : RegisteredOwner : manager
3) 무슨 사이트에 접속했냐?
NTUSER.DAT 파일을 분석하라
각 계정별로 존재함
최근 실행한 프로그램 및 파일
Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
원본 주소 > Win7_Manager-disk002:\Part1\Users\manager\AppData\Roaming\Microsoft\Windows\Recent
16진수 헥사값으로 데이터 저장 > ASCII코드로 변환하면 읽을 수 있음
자동 실행 프로그램
Software\Microsoft\Windows\CurrentVersion\Run
웹브라우저 히스토리 및 URL 기록
Software\Microsoft\Internet Explorer\TypedURLs (IE/Edge)
Software\Mozilla\Mozilla Firefox (Firefox)
Software\Google\Chrome\PreferenceMACs (Chome)
USB 장치 연결 기록
Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
최근 사용한 실행 명령어
Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
바탕화면 및 개인화 설정
Control Panel\Desktop
최초로 등록한 사용자의 계정명
컴퓨터 사용자를 특정하기 위한 출발점
컴퓨터 이름
SYSTEM\ControlSet001\services\Tcpip\Parameters > Hostname
시스템 설치 시간알아보기 > SOFTWARE > Microsoft > Windows NT > CurrentVersion
설치 시간 : InstallDate : 0x5ECDF569 (1590556009)
주인 : RegisteredOwner : manager
최근 검색 기록
Software\Microsoft\Windows\CurrentVersion\Explorer\WordWhellQuery
사용자의 마지막 액션기록
Win7_Manager-disk002:\Part1\Users\manager\AppData\Local\Microsoft\Internet Explorer\Recovery\Active
사용자의 웹브라우저 히스토리 기록
Win7_Manager-disk002:\Part1\Users\manager\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Content.IE5\index.dat
실행된 파일 기록
Win7_Manager-disk002:\Part1\Windows\Prefetch
시나리오2
해커가 업로드 기능을 이용해 악성코드를 업로드후
관리자가 파일을 다운로드 받는 경우 분석
1) 컴퓨터 부팅은 언제인가?
2025-02-07 16:22:00
2) 누가 접속했는가?
2025-02-07 16:22:30 manager
3) 어디에 접속을 했는가?
web1.st.kr
4) 데이터베이스에 접속을 했는가?
접속함
5) 해커가 사이트를 공격했는가?
web1.st.kr nmap
web1.st.kr nikito
web1.st.kr 디렉토리 리스팅
6) 공격했다면 무슨 흔적을 남겼는가?
? /var/log
? 실시간 패킷은 tcpdump로만 확인 가능함
? 방화벽 반응은?
nmap -sT -O 125.246.95.253
nmap -v -p 1-65535 125.246.95.253
7) 흔적들을 관리자가 실시간으로 모니터링 했는가?