37일차

37일차

홈으로 돌아가기

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) 흔적들을 관리자가 실시간으로 모니터링 했는가?