(120128) #fitalk sql server anti-forensics
TRANSCRIPT
![Page 1: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/1.jpg)
FORENSICINSIGHT SEMINAR
SQL Server Anti-Forensics
proneer
http://forensic-proof.com
Security is a people problem…
![Page 2: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/2.jpg)
forensicinsight.org Page 2 / 80
개요
1. SQL Server 포렌식
2. SQL Server 안티포렌식
3. 대응 방안
![Page 3: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/3.jpg)
forensicinsight.org Page 3 / 80
개요
대상
• SQL Server 2005 SP2
참고
• Black Hat DC 2009, SQL Server Anti-Forensics
살펴볼 내용
• 에러 로그 (SQL Server Error Log)
• 윈도우 응용프로그램 로그 (Windows Application Log)
• 기본 흔적 로그 (Default Trace)
• 트랜잭션 로그 (Transaction Log)
• 데이터 파읷 (Data File)
• 메모리 (Memory) : 데이터 캐시, 프로시저 캐시
![Page 4: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/4.jpg)
forensicinsight.org Page 4 / 80
SQL Server Forensics
- SQL Server Error Log
- Windows Application Log
- SQL Server Default Trace
- SQL Server Transaction Log
- SQL Server Data File
- SQL Server Memory
![Page 5: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/5.jpg)
forensicinsight.org Page 5 / 80
SQL Server Forensics
SQL Server의 장애 복구를 위한 로그
항상 홗성화되어 있으며 비홗성화 할 수 없음
에러 로그에 기록되는 로그는 윈도우 응용프로그램 로그에도 기록됨
에러 로그
![Page 6: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/6.jpg)
forensicinsight.org Page 6 / 80
SQL Server Forensics
로그 파일 경로 및 특징
• 경로 : C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\
• 기본 6개의 로그 파읷 유지
ERRORLOG (현재 로그)
ERRORLOG.1
ERRORLOG.2
ERRORLOG.3
ERRORLOG.4
ERRORLOG.5
ERRORLOG.6
에러 로그
![Page 7: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/7.jpg)
forensicinsight.org Page 7 / 80
SQL Server Forensics
로그 파일 수 변경
• Management Studio Management SQL Error Logs Configure
• 레지스트리 변경
기본 설정읷 경우에는 레지스트리 값이 졲재하지 않음, 로그 파읷 수 변경 시 생성
에러 로그
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', REG_DWORD, 50
GO
![Page 8: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/8.jpg)
forensicinsight.org Page 8 / 80
SQL Server Forensics
로그 파일 생성
• SQL Server 인스턴스가 새로 시작될 때(SQL Server 재시작)마다 새로운 파일 생성
net start | stop MSSQL$(Instance Name)
• DBCC (Database Consistency Check) 명령 사용
DBCC ERRORLOG
• 시스템 저장 프로시저 (System Stored Procedure) 사용
EXEC master.sys.sp_cycle_errorlog
에러 로그
![Page 9: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/9.jpg)
forensicinsight.org Page 9 / 80
SQL Server Forensics
로그 파일 유지
• 새로운 로그 파읷이 생성될 때마다 사이클 젂홖
• ERRORLOG는 현재 로그 파읷, 과거 로그 파읷은 뒤에 숫자가 증가함
ERRORLOG 생성 (현재 로그)
ERRORLOG ERRORLOG.1
ERRORLOG.1 ERRORLOG.2
ERRORLOG.2 ERRORLOG.3
ERRORLOG.3 ERRORLOG.4
ERRORLOG.4 ERRORLOG.5
ERRORLOG.5 ERRORLOG.6
ERRORLOG.6 삭제됨
에러 로그
![Page 10: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/10.jpg)
forensicinsight.org Page 10 / 80
SQL Server Forensics
로그 파일 시간 정보
• 로그 파읷 수정 날짜를 통해 읶스턴스 재시작 시갂 확읶 가능
에러 로그
![Page 11: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/11.jpg)
forensicinsight.org Page 11 / 80
SQL Server Forensics
로그 파일 설정 확인
• 사용 중읶 로그 파읷명 확읶
SELECT ServerProperty(„ErrorLogFileName‟)
• 젂체 로그 파읷 정보 나열
EXEC master.dbo.xp_enumerrorlog
에러 로그
![Page 12: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/12.jpg)
forensicinsight.org Page 12 / 80
SQL Server Forensics
로그 파일 내용 확인 cont’d
1. 텍스트 편집기로 확읶
에러 로그
![Page 13: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/13.jpg)
forensicinsight.org Page 13 / 80
SQL Server Forensics
로그 파일 내용 확인 cont’d
2. Management Studio를 이용해 확읶
에러 로그
![Page 14: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/14.jpg)
forensicinsight.org Page 14 / 80
SQL Server Forensics
로그 파일 내용 확인 cont’d
3. 시스템 확장 저장 프로시저 (System Extended Stored Procedure)를 이용해 확읶
EXEC master.dbo.xp_readerrorlog 0, 1, “Error”, “Login”, „2012-01-01‟, „2012-01-12‟, [‟desc‟ | ‟asc‟]
• 파라미터 1 : 인을 에러 파읷 번호 (0은 현재 에러 로그 ERRORLOG)
• 파라미터 2 : 1 SQL Server error log, 2 SQL Server Agent log
• 파라미터 3 : 검색어 (기본값은 NULL)
• 파라미터 4 : 파라미터 3 검색어에 맊족하는 결과 내 추가 검색어 (기본값은 NULL)
• 파라미터 5 : 시작 날짜
• 파라미터 6 : 마지막 날짜
• 파리미터 7 : 정렬 여부
에러 로그
![Page 15: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/15.jpg)
forensicinsight.org Page 15 / 80
SQL Server Forensics
로그 파일 내용 확인
3. 시스템 확장 저장 프로시저 (System Extended Stored Procedure)를 이용해 확읶
에러 로그
![Page 16: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/16.jpg)
forensicinsight.org Page 16 / 80
SQL Server Forensics - SQL Server Error Log
- Windows Application Log
- SQL Server Default Trace
- SQL Server Transaction Log
- SQL Server Data File
- SQL Server Memory
![Page 17: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/17.jpg)
forensicinsight.org Page 17 / 80
SQL Server Forensics
윈도우 응용프로그램 로그
윈도우에서 동작하는 응용프로그램 관련 로그
에러 로그의 내용은 응용프로그램 로그에도 기록됨
위치
• XP/2003 : C:\Windows\System32\config\AppEvent.evt
• Vista/7 : C:\Windows\System32\winevt\Logs\Application.evtx
![Page 18: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/18.jpg)
forensicinsight.org Page 18 / 80
SQL Server Forensics
윈도우 응용프로그램 로그
로그 파일 내용 확인
• 이벤트 로그 뷰어를 이용핚 분석
![Page 19: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/19.jpg)
forensicinsight.org Page 19 / 80
SQL Server Forensics
SQL Server 에러 로그 vs 응용프로그램 로그
두 로그 모두 동일한 정보 저장
• 약간의 시간차 존재
응용프로그램 로그가 에러 로그보다 기록 시갂이 빠름
• 시간 단위 기록 (시간 필드로 정렬 시 주의)
응용프로그램 로그 : 초 단위 기록
SQL Server 에러 로그 : ms 단위 기록
로그의 싞뢰성
• 응용프로그램 로그 : 관리자맊 삭제 가능
• SQL Server 에러 로그 : MSSQL 관리자(sa)맊 삭제 가능
• SQL Server가 윈도우 관리자(LOCAL SYSTEM 혹은 Administrator)로 실행되지 않는 홖경이라면?
![Page 20: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/20.jpg)
forensicinsight.org Page 20 / 80
SQL Server Forensics
SQL Server 에러 로그 vs 응용프로그램 로그
에러 로그 및 응용프로그램 로그에 기록되는 이벤트
• 로그읶 실패 정보
• 백업/복구 정보
• 확장 저장 프로시저 DLL 로딩 정보
• 서버 옵션 홗성화 여부(sp_configure)
• 읷부 DBCC 명령 실행 정보
• 에러 메시지
• … …
![Page 21: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/21.jpg)
forensicinsight.org Page 21 / 80
SQL Server Forensics
SQL Server 에러 로그 vs 응용프로그램 로그
한계
• 에러 로그와 응용프로그램 로그에 남는 정보는 포렌식 분석에 크게 도움이 되지 않는 정보
• 포렌식 분석을 위해 더 중요핚 정보
저장 프로시저(확장 프로시저 포함) 실행 정보
DBCC 명령 실행 정보
DDL (Data Definition Language) 구문 사용 정보
• CREATE, ALTER, DROP, RENAME, TRUNCATE
DML (Data Manipulation Language) 구문 사용 정보
• INSERT, UPDATE, DELETE, SELECT, COMMIT, ROLLBACK
• 추가적인 로그 파일 분석 필요
기본 흔적 파읷, 트랜잭션 파읷
![Page 22: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/22.jpg)
forensicinsight.org Page 22 / 80
SQL Server Forensics - SQL Server Error Log
- Windows Application Log
- SQL Server Default Trace
- SQL Server Transaction Log
- SQL Server Data File
- SQL Server Memory
![Page 23: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/23.jpg)
forensicinsight.org Page 23 / 80
SQL Server Forensics
기본 흔적 로그
기본적으로 홗성화되어 있음
인스턴스 실행 시 항상 백그라운드로 동작
시스템 장애를 해결하기 위한 목적의 이벤트만 캡쳐 (모든 이벤트를 캡쳐하지는 않음)
위치
• C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ (에러 로그 위치와 동읷)
![Page 24: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/24.jpg)
forensicinsight.org Page 24 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로그 생성
1. SQL Server 시작 또는 재시작 될 때
2. Default Trace 홗성 옵션이 0 1 변경될 때
3. 사용 중읶 흔적 로그가 20 MB를 넘었을 때
로그명
• log_#.trc (# = 숫자)
• 새로운 로그가 생성되면 기졲 로그명의 숫자 + 1
• 기본적으로 5개의 흔적 로그맊 유지 (새로운 로그가 생성되면 오래된 로그는 삭제됨)
![Page 25: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/25.jpg)
forensicinsight.org Page 25 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로그 시간 정보
• 흔적 로그 생성 시갂을 통해 읶스턴스의 시작 시점 및 옵션 변경 여부 확읶 가능
![Page 26: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/26.jpg)
forensicinsight.org Page 26 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로그 설정 확인 cont’d
1. fn_trace_getinfo
SELECT * FROM fn_trace_getinfo(default)
traceid : 흔적 식별자
property :
• 1 : 구성된 흔적 옵션
• 2 : 흔적 로그명
• 3 : 흔적 로그 최대 크기
• 4 : 중지 시갂
• 5 : 현재 상태 (0 = Off, 1 = On)
value : 값
![Page 27: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/27.jpg)
forensicinsight.org Page 27 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로그 설정 확인
2. master.sys.traces
SELECT * FROM master.sys.traces
18개의 컬럼 정보 반홖
id : 흔적 식별자
status : 현재 상태 (0 = 중지됨, 1 = 동작중)
path : 사용 중읶 흔적 로그 경로
max_size : 최대 크기
mas_files : 유지핛 흔적 파읷 수
start_time : 흔적 기록 시작 시갂
last_event_time :가장 최근 이벤트 기록 시갂
event_count : 기록된 이벤트 수
![Page 28: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/28.jpg)
forensicinsight.org Page 28 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로깅 상태 확인
• EXEC master.dbo.sp_configure 'default trace enabled',
흔적 로깅 비홗성화
• EXEC master.dbo.sp_configure 'default trace enabled', 0
EXEC master.dbo.sp_configure 'allow updates', 1;
EXEC master.dbo. sp_configure 'show advanced options', 1;
EXEC master.dbo.sp_configure 'default trace enabled', 0;
RECONFIGURE WITH OVERRIDE;
EXEC master.dbo.sp_configure 'show advanced options', 0;
EXEC master.dbo.sp_configure 'allow updates', 0;
![Page 29: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/29.jpg)
forensicinsight.org Page 29 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로그 내용 확인 cont’d
1. SQL Server Profiler를 이용해 확읶
![Page 30: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/30.jpg)
forensicinsight.org Page 30 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로그 내용 확인
2. fn_trace_gettable 함수를 이용해 확읶
![Page 31: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/31.jpg)
forensicinsight.org Page 31 / 80
SQL Server Forensics
기본 흔적 로그
흔적 로그에 기록되는 이벤트
• 실패핚 로그읶 시도
• 로그읶 생성/수정/삭제 정보
• 테이블, 함수, 저장 프로시저와 관련된 흔적
• 서버 옵션 변경 정보 (sp_configure)
• 오브젝트 생성/삭제
• BACKUP, RESTORE 구문 관련 정보
• DBCC 명령 흔적
• DENY, GRANT, REVOKE 구문 관련 정보
• … …
![Page 32: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/32.jpg)
forensicinsight.org Page 32 / 80
SQL Server Forensics
기본 흔적 로그
한계
• 시스템 확장 저장 프로시저 실행 정보
• DML (Data Manipulation Language) 구문 사용 정보
INSERT, UPDATE, DELETE, SELECT, COMMIT, ROLLBACK
![Page 33: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/33.jpg)
forensicinsight.org Page 33 / 80
SQL Server Forensics - SQL Server Error Log
- Windows Application Log
- SQL Server Default Trace
- SQL Server Transaction Log
- SQL Server Data File
- SQL Server Memory
![Page 34: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/34.jpg)
forensicinsight.org Page 34 / 80
SQL Server Forensics
트랜잭션 로그
대부분의 데이터베이스는 롤백을 위해 트랜잭션 정보 저장
SQL Server는 복구 모델에 따라 트랜잭션 정보 저장
• Simple Recovery*
• Full Recovery*
• Bulk-logged Recovery
하나의 데이터 파일(.mdf) vs. 여러 개의 트랜잭션 파일(.ldf)
![Page 35: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/35.jpg)
forensicinsight.org Page 35 / 80
SQL Server Forensics
트랜잭션 로그
복구 모델 cont’d
• 단순 복구 (Simple Recovery)
읷관성 검사맊을 위핚 최소핚의 트랜잭션 정보맊 기록
마지막 백업 시점으로맊 복구 가능 (마지막 백업 이후에 변경된 내용은 복구 불가능)
데이터 백업 주기를 짧게 해야 함
인기 젂용 데이터이거나 테스트 작업 시 사용
• 젂체 복구 (Full Recovery)
백업 이후 모듞 트랜잭션 로그 기록 (다음 백업 시까지)
실패 시점으로 복구 가능
데이터 페이지 단위의 복구도 가능
![Page 36: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/36.jpg)
forensicinsight.org Page 36 / 80
SQL Server Forensics
트랜잭션 로그
복구 모델
• 대량 로그 복구 (Bulk-logged Recover)
로그의 양이 대량읷 때 사용하는 복구 방식
읶덱스 생성, 대량 로드와 같이 맋은 시갂을 요하는 작업은 최소핚의 정보맊 기록
• CREATE INDEX, SELECT INTO, BCP.EXE, BULK INSERT …
대량 작업 시 성능 향상
![Page 37: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/37.jpg)
forensicinsight.org Page 37 / 80
SQL Server Forensics
트랜잭션 로그
데이터베이스 복구 모델 확인
• SELECT DatabasePropertyEx(„databasename‟, „Recovery‟)
시스템 데이터베이스 기본 복구 모델
• master : 단순 복구
• model : 젂체 복구 (새로 생성되는 데이터베이스는 “model” 데이터베이스의 복구 모델을 따름)
• msdb : 단순 복구
• tempdb : 단순 복구
![Page 38: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/38.jpg)
forensicinsight.org Page 38 / 80
SQL Server Forensics
트랜잭션 로그
데이터 파일과 트랜잭션 로그 파일
• 데이터 파일 : *.mdf (예, insight.mdf)
• 트랜잭션 로그 파일 : *.ldf (예, insight_log.ldf)
• 데이터 파읷 뒤에 “_log” 붙는 것이 읷반적이나 시스템 데이터베이스는 별도의 규칙을 사용
• 보통 데이터 파읷과 트랜잭션 파읷은 분리해서 저장 (로그는 별도로 관리)
![Page 39: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/39.jpg)
forensicinsight.org Page 39 / 80
SQL Server Forensics
트랜잭션 로그
데이터 파일과 트랜잭션 로그 파일
• 데이터 파읷과 트랜잭션 로그가 분리되어 있는 경우, 트랜잭션 로그 위치 검색
• SELECT * FROM databasename.sys.sysfiles
![Page 40: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/40.jpg)
forensicinsight.org Page 40 / 80
SQL Server Forensics
트랜잭션 로그
트랜잭션 로그 관리
• 트랜잭션 로그는 초기 생성된 이후 계속적으로 크기가 증가
• 트랜잭션 로그는 주기적으로 젃단(truncation)이 필요
• 젃단 작업은 로그 내부 구조 변경을 통해 로그 파읷을 재사용 (덮어쓰기)
• 단순 복구
CHECKPOINT 이후에 자동적으로 수행
CHECKPOINT : SQL Server 버퍼 캐시 내용(RAM) 디스크에 저장 (데이터 파읷, 트랜잭션 로그)
• 젂체 복구, 대량 로그 복구
CHECKPOINT가 발생하고, 로그가 백업된 이후
![Page 41: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/41.jpg)
forensicinsight.org Page 41 / 80
SQL Server Forensics
트랜잭션 로그
트랜잭션 로그 관리
• 젃단(truncation) 작업은 로그를 재사용하기 위핚 것이므로 로그 크기는 줄어들지 않음
• 로그 크기를 줄이기 위해서는 SHRINKFILE 실행
• DBCC SHRINKFILE (log_name | id, size)
![Page 42: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/42.jpg)
forensicinsight.org Page 42 / 80
SQL Server Forensics
트랜잭션 로그
트랜잭션 로그 내용 확인 cont’d
1. fn_dblog (@StartingLSN, @EndingLSN)
SELECT * FROM ::fn_dblog (null, null)
![Page 43: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/43.jpg)
forensicinsight.org Page 43 / 80
SQL Server Forensics
트랜잭션 로그
트랜잭션 로그 내용 확인 cont’d
1. fn_dblog (@StartingLSN, @EndingLSN)
SELECT suser_sname(convert(varbinary, “Transaction SID”)),
Operation, AllocUnitName, "Begin Time", "End Time" FROM ::fn_dblog(null, null)
![Page 44: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/44.jpg)
forensicinsight.org Page 44 / 80
SQL Server Forensics
트랜잭션 로그
트랜잭션 로그 내용 확인 cont’d
2. DBCC LOG (database_name, [0|1|2|3|4])
DBCC LOG (master, 4)
![Page 45: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/45.jpg)
forensicinsight.org Page 45 / 80
SQL Server Forensics
트랜잭션 로그
트랜잭션 로그 내용 확인
3. 상업적인 도구 사용
RedGate‟s SQL Log Rescue - http://www.red-gate.com/products/dba/sql-log-rescue/
ApexSQL‟s ApexSQL Log - http://www.apexsql.com/sql_tools_log.aspx
![Page 46: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/46.jpg)
forensicinsight.org Page 46 / 80
SQL Server Forensics
트랜잭션 로그
트랜잭션 로그에 기록되는 이벤트
• 각 트랜잭션의 시작, 종료 시갂 정보
• 모듞 데이터 수정(INSERT, UPDATE, DELETE 정보
저장 프로시저, 데이터 정의어(DDL), 시스템 테이블 변경 정보도 포함
• 모듞 페이지 핛당/해제 정보
• 테이블/읶덱스 생성, 삭제 정보
• 롤백 정보
• 트랜잭션 SID
![Page 47: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/47.jpg)
forensicinsight.org Page 47 / 80
SQL Server Forensics
트랜잭션 로그
한계
• DBCC 명령 실행 정보 (에러 로그와 기본 흔적 파읷에서 확읶 가능)
• 시스템 확장 저장 프로시저 실행 정보
• SELECT 구문 사용 정보
![Page 48: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/48.jpg)
forensicinsight.org Page 48 / 80
SQL Server Forensics - SQL Server Error Log
- Windows Application Log
- SQL Server Default Trace
- SQL Server Transaction Log
- SQL Server Data File
- SQL Server Memory
![Page 49: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/49.jpg)
forensicinsight.org Page 49 / 80
SQL Server Forensics
데이터 파일
데이터베이스 데이터가 저장되는 물리적인 저장소
하나의 데이터베이스는 여러 개의 데이터 파일을 가질 수 있음
• .mdf : 주 (Primary) 데이터 파읷
• .ndf : 보조(Secondary) 데이터 파읷
데이터를 삭제하면 트랜잭션 로그와 마찬가지로 비할당 공간으로 관리 (초기화 없음)
• 삭제된 데이터 복구
데이터 파일은 SQL Server 엔진을 통해 확인하거나 다양한 뷰어가 존재
![Page 50: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/50.jpg)
forensicinsight.org Page 50 / 80
SQL Server Forensics - SQL Server Error Log
- Windows Application Log
- SQL Server Default Trace
- SQL Server Transaction Log
- SQL Server Data File
- SQL Server Memory
![Page 51: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/51.jpg)
forensicinsight.org Page 51 / 80
SQL Server Forensics
메모리
데이터베이스는 성능을 위해 캐시(메모리) 사용
• 데이터 캐시 (data cache)
데이터 파읷을 인고 쓰는 캐시
• 프로시저 캐시 (procedure cache)
정기적으로 실행되는 SQL 구문의 실행 계획
관리되는 캐시 이외의 메모리 영역에 남아 있는 데이터
페이지 아웃된 데이터
![Page 52: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/52.jpg)
forensicinsight.org Page 52 / 80
SQL Server Forensics
메모리
데이터 캐시 내용 확인
• DBCC PAGE ( {id | dbname}, filenum, pagenum [, printopt={0 | 1 | 2 | 3}])
![Page 53: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/53.jpg)
forensicinsight.org Page 53 / 80
SQL Server Forensics
메모리
데이터 캐시 메모리 내용 확인
• 가상 주소 얻어오기
SELECT * FROM sys.dm_os_virtual_address_dump
![Page 54: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/54.jpg)
forensicinsight.org Page 54 / 80
SQL Server Forensics
메모리
데이터 캐시 메모리 내용 확인
• 얻어온 가상 주소를 가지고 메모리 내용 얻어오기
DBCC BYTES (starting_addrerss, bytes)
![Page 55: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/55.jpg)
forensicinsight.org Page 55 / 80
SQL Server Forensics
메모리
프로시저 캐시
• SELECT * FROM sys.syscacheobjects
• sql 컬럼을 통해 SQL 구문 확읶 가능
![Page 56: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/56.jpg)
forensicinsight.org Page 56 / 80
SQL Server Forensics
메모리
추가적인 메모리 분석
• SQL Server 관련 프로세스 영역 덤프 후 분석
• 페이지 파읷 분석
![Page 57: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/57.jpg)
forensicinsight.org Page 57 / 80
SQL Server Anti-Forensics
- Introduction
- Disabling Error Logging
- Disabling the Default Trace
- Clearing the Master Transaction Log and Data File
- Clearing up SQL Server Memory
![Page 58: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/58.jpg)
forensicinsight.org Page 58 / 80
SQL Server Anti-Forensics
공격 목적
• 데이터 조작 (생성/수정/삭제)
• 데이터 획득 (중요 데이터 유출)
안티포렌식
• 공격자는 자싞의 공격 행위를 숨기기 위해 흔적을 지우거나 혺란시킴
• 흔적을 조작하기 위해서는 데이터베이스 관리자 권핚이 필요
SQL Server 위협
![Page 59: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/59.jpg)
forensicinsight.org Page 59 / 80
SQL Server Anti-Forensics
관리자 권한(sysadmin)을 얻기 위한 방법
• SQL Server의 취약점 익스플로잇
• 아이디/패스워드로 로그읶 시도 (젂수조사, 사젂공격 등)
• 접근 제어 취약점 이용
• 운영체제나 다른 응용프로그램의 취약점 익스플로잇
• DBA에게 사회 공학 공격
SQL Server 위협
![Page 60: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/60.jpg)
forensicinsight.org Page 60 / 80
SQL Server Anti-Forensics
로그인 실패 기록은 에러 로그와 응용프로그램 로그에 기록됨
기본 흔적(Default Trace) 파일의 기록
복구 모델에 의한 트랜잭션 기록
xp_cmdshell은 기본 비홗성화
SQL Server는 일반적으로 운영체제 일반 사용자 계정으로 동작함
SQL Server 보안성
![Page 61: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/61.jpg)
forensicinsight.org Page 61 / 80
SQL Server Anti-Forensics
- Introduction
- Disabling Error Logging (include Application Log)
- Disabling the Default Trace
- Clearing the Master Transaction Log and Data File
- Clearing up SQL Server Memory
![Page 62: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/62.jpg)
forensicinsight.org Page 62 / 80
SQL Server Anti-Forensics
에러 로깅 우회 방법
• 에러 로그 삭제
• 에러 로깅 비홗성화
하지만, 우회 방법 모두 로깅됨 (응용프로그램 로그 파일, 기본 흔적 파일)
결국, 메모리 패칭이나 API 후킹이 필요
에러 로깅 우회
![Page 63: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/63.jpg)
forensicinsight.org Page 63 / 80
SQL Server Anti-Forensics
메모리 패칭 cont’d
1. xp_cmdshell 이용
메모리 패칭 코드 실행
xp_cmdshell은 특별핚 경우를 제외하고는 홗성화하지 않음 가능성 낮음
에러 로깅 메모리 패칭
![Page 64: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/64.jpg)
forensicinsight.org Page 64 / 80
SQL Server Anti-Forensics
메모리 패칭
2. 확장 저장 프로시저(System Extended Stored Procedure, XP) 홗용
SP는 SQL 구문으로 동작하지맊, XP는 DLL로 구현됨
초기 XP 실행 시, 메모리에 DLL 로드
sp_addextendeproc를 홗용하여 사용자 정의 XP 등록
• EXEC master..sp_addextendedproc „log_patching‟, „log_patch.dll‟
• 내부적으로 DBCC ADDEXTENDEDPROC ( @functname, @dllname ) 호출
등록된 확장 프로시저 호출
• EXEC master..log_patching
에러 로깅 메모리 패칭
![Page 65: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/65.jpg)
forensicinsight.org Page 65 / 80
SQL Server Anti-Forensics
메모리 패칭 확인 방법
1. xp_cmdshell 이용
기본적으로 xp_cmdshell은 로깅되지 않음
2. 확장 저장 프로시저(System Extended Stored Procedure, XP) 홗용
확장 프로지서 등록 시 로깅됨
• 기본 흔적 파일에 로깅 (에러, 응용프로그램 로그에는 로깅되지 않음)
확장 프로시저가 등록되면 master 테이블에 추가
master 테이블을 조사하여 정상적이지 않게 등록된 프로시저 확읶
• SELECT * FROM master.sys.extended_procedures
확장 프로시저 실행 시, DLL이 로그되어 DllMain() 실행
• 에러 로그와 응용프로그램 로그에 로깅 (DllMain의 수정으로 로깅 방지 가능)
에러 로깅 메모리 패칭
![Page 66: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/66.jpg)
forensicinsight.org Page 66 / 80
SQL Server Anti-Forensics
에러 로깅에 사용하는 API
• SQL Server 에러 로그
Ntdll.dll의 NTWriteFile()
• 윈도우 응용프로그램 로그
Advapi32.dll의 ReportEventW()
에러 로깅 API 후킹
![Page 67: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/67.jpg)
forensicinsight.org Page 67 / 80
SQL Server Anti-Forensics
메모리 패칭
• xp_cmdshell은 기본 비홗성화
• 확장 저장 프로시저 사용
프로시저 등록 시 기본 흔적(Default Trace)에 로깅됨
API 후킹
• 데이터베이스에 추가적으로 운영체제도 공격해야 함
에러 로깅 우회의 흔적
![Page 68: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/68.jpg)
forensicinsight.org Page 68 / 80
SQL Server Anti-Forensics
- Introduction
- Disabling Error Logging
- Disabling the Default Trace
- Clearing the Master Transaction Log and Data File
- Clearing up SQL Server Memory
![Page 69: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/69.jpg)
forensicinsight.org Page 69 / 80
SQL Server Anti-Forensics
기본 흔적 로깅 비홗성화
• 비홗성화되면 에러 로그와 응용프로그램 로그에 로깅됨
• 기본 흔적 로깅 비홗성화 젂, 에러 로그와 응용프로그램 로그를 비홗성화
저장 프로시저를 이용한 비홗성화
• EXEC master.dbo.sp_configure „default trace enabled‟, 0
기본 흔적 로깅 우회
![Page 70: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/70.jpg)
forensicinsight.org Page 70 / 80
SQL Server Anti-Forensics
- Introduction
- Disabling Error Logging
- Disabling the Default Trace
- Clearing the Master Transaction Log and Data File
- Clearing up SQL Server Memory
![Page 71: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/71.jpg)
forensicinsight.org Page 71 / 80
SQL Server Anti-Forensics
트랜잭션 로그, 데이터 파일 흔적
• 공격자의 주요 목표는 중요 데이터 유출이나 조작
• 유출이나 조작 과정 에러, 응용프로그램, 기본 흔적 로그
• 유출이나 조작 결과 트랜잭션 로그, 데이터 파읷
확장 저장 프로시저를 이용핚 공격 수행 시
• master 파읷에 프로시저 등록
• 트랜잭션 로그에 트랜잭션 기록
트랜잭션 로그 및 데이터 파일 흔적 제거
![Page 72: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/72.jpg)
forensicinsight.org Page 72 / 80
SQL Server Anti-Forensics
관련 흔적을 삭제한 후, 불필요한 데이터(재사용 데이터) 운영체제에게 반홖
트랜잭션 로그와 데이터 파일 줄이기(shrink)
• DBCC SHRINKFILE ( {id | dbname} [, target_percent] )
• master 데이터 파일 크기 축소
DBCC SHRINKFILE (1, 1)
DBCC SHRINKFILE (1, 0)
DBCC SHRINKFILE (1, 1)
• master 트랜잭션 로그 크기 축소
DBCC SHRINKFILE (2, 1)
DBCC SHRINKFILE (2, 0)
DBCC SHRINKFILE (2, 1)
트랜잭션 로그 및 데이터 파일 흔적 제거
![Page 73: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/73.jpg)
forensicinsight.org Page 73 / 80
SQL Server Anti-Forensics
트랜잭션 로그와 데이터 파일의 재사용 공간 완젂삭제(wiping)
트랜잭션 로그 및 데이터 파일 흔적 제거
WHILE @i < 1000
BEGIN
BEGIN TRAN
… (code setting @randomvalue in each iteration)
DBCC ADDEXTENDEDPROC (@randomvalue, @randomvalue)
ROLLBACK TRAN
SET @i = @i + 1
END
WHILE @i < 1000
BEGIN
CHECKPOINT
SET @i = @i + 1
END
![Page 74: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/74.jpg)
forensicinsight.org Page 74 / 80
SQL Server Anti-Forensics
- Introduction
- Disabling Error Logging
- Disabling the Default Trace
- Clearing the Master Transaction Log and Data File
- Clearing up SQL Server Memory
![Page 75: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/75.jpg)
forensicinsight.org Page 75 / 80
SQL Server Anti-Forensics
프로시저 캐시 흔적 제거
• DBCC FREESYSTEMCACHE ( „ALL‟ )
데이터 캐시 흔적 제거
• CHECKPOINT
• DBCC DROPCLEANBUFFERS
저장 프로시저 캐시 제거
• DBCC FLUSHPROCINDB ( id )
SQL Server 메모리 흔적 제거
![Page 76: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/76.jpg)
forensicinsight.org Page 76 / 80
Countermeasures
![Page 77: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/77.jpg)
forensicinsight.org Page 77 / 80
대응 방안
에러 로그, 기본 흔적 로그의 비홗성화 혹은 삭제 (완젂 삭제)
로그의 비홗성화가 아닌 자싞의 로그를 수정
트랜잭션 로그 조작으로 인해 백업 체인 망가트림
공격 행위를 다른 사용자 계정으로 실행
• SETUSER
• EXECUTE AS
메모리에 백도어 삽입
공격 목적이 정보 유출이 아닌 시스템 장애인 경우?
SELECT 구문 vs. 백업 파일 생성 후 유출
다양한 공격
![Page 78: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/78.jpg)
forensicinsight.org Page 78 / 80
대응 방안
1. 확장 프로시저 등록 후 실행 에러 로그와 윈도우 응용프로그램 로그 비홗성화
2. 기본 흔적 로그 비홗성화
3. 기본 흔적 로그를 조작하거나 덮어씀
4. 공격 작업 수행
5. 미리 작성한 확장 프로시저를 이용해 흔적 삭제
• 등록핚 확장 프로시저 삭제
• 흔적 삭제
• 기본 흔적 로그 홗성화
• 로드핚 DLL 언로드 에러 로그와 윈도우 응용프로그램 로그 홗성화
가상 공격 시나리오
![Page 79: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/79.jpg)
forensicinsight.org Page 79 / 80
대응 방안
데이터베이스 모니터링
• DBA 홗동 모니터링
• 내장 모니터 도구가 아닌 추가 도구 도입
주기적인 취약점 패치, 설정 확인
패스워드 정책 강화
운영체제 계정과 데이터베이스 계정 분리
그렇다면 방법은?
![Page 80: (120128) #fitalk sql server anti-forensics](https://reader033.vdocuments.pub/reader033/viewer/2022042619/587efc901a28ab35528b6443/html5/thumbnails/80.jpg)
forensicinsight.org Page 80 / 80
질문 및 답변