어플리케이션 보안 & 취약점 진단
[ 쉘 Shell ] ⭐
▶ 쉘 Shell : 사용자의 명령어를 받아들이고 해석 및 실행
- 멀티프로그래밍 방식인 윈도우는 cmd를 이용해 Dos Shell 동작
~> 과거 DOS 시절부터 쓰여졌던 명령어 이용 가능
~> 실행 > cmd
~> 일부 내부 명령어 내장
- 리눅스는 바탕화면(Desktop)에서 Ctrl + Alt + T를 눌러 터미널 쉘 창을 실행
[ 디스크 Disk ]
▶ 디스크의 종류
- 주기억 장치
~> RAM(Random Access Memory)
~> 휘발성 데이터 저장
~> 1G 2G 4G 8G ...
~> 플래쉬 메모리는 RAM(휘발성)이 아니다
~> 속도 빠름
- 보조기억 장치
~> 컴퓨터 동작 시 데이터를 영구(반영구)적으로 저장
~> 비휘발성 데이터 저장
~> 속도 느림
~> 디스크라 불림
▶ Disc
: 오디오 CD, CD-ROM, DVD-ROM, DVD-RAM 또는 DVD-비디오 등과 같은 광학 미디어
- 일부 디스크는 읽기 전용 (ROM)이며, 그 밖에 콘텐츠를 한 번 구울 (파일 쓰기) 수 있는 디스크와 여러 번 지우고 다시 쓸 수 있는 디스크(ex. CD-RW, DVD-RW 및 DVD-RAM 디스크)도 존재
- 모든 디스크(disc)는 분리 가능, 즉! 데스크탑이나 Finder에서 디스크를 마운트 해제하거나 추출하면 실제로 컴퓨터에서 분리됨
⚠️ Disc와 Disk는 다른 것!
▶ Disk
: 플로피 디스크(외장 하드 드라이브인 컴퓨터 하드 드라이브의 디스크) 같이 자성을 띤 미디어
- 일부러 잠그거나 보호하지 않는 한 디스크(disk)는 항상 다시 쓸 수 있음!
- 디스크를 몇 개의 작은 볼륨으로 파티션 분할 가능
- 디스크는 대개 금속이나 플라스틱 케이스 안에 밀봉되어 있음
- 디스크와 외장 장치를 함께 '하드 드라이브'라고 부름
▶ 자기테이프
: 플라스틱 테이프 겉에 산화철 등의 자성 재료를 바른 테이프
- 대부분 컴퓨터 기억, 오디오, 비디오를 기록하는 데 쓰임
- 비영구적, 순차 기록이라는 단점 존재
▶ 하드 디스크 HDD(Hard Disk Drive)
- 컴퓨터 주요 부품
- 원래 이름은 자기 디스크(Magnetic Disk Drive, MDD)
- 나중에 자기를 이용한 플로피 디스크 드라이브 (Floppy Disk Drive)
- 딱딱한 디스크라는 뜻
- 최초의 HDD는 1956년 IBM의 'RAMAC(Random Access Method of Accounting and Control)
~> 무작위 접근 방식의 회계 및 제어 방식
~> 1953년 IMB 개발
~> 60cm, 약 5MB의 저장공간
~> 지게차 또는 대형 화물 비행기 통해 배송
▶ Floppy Disk Drive
- 자성체로 덮여 있는 회전할 수 있는 원판 존재
▶ 인터페이스
- IDE(Integrated Drive Electronics) 또는 ATA
~> 가장 오래된 규격 40개의 핀으로 구성
~> 병렬이라는 뜻에서 PATA(Parallel Advenced Technology Attachment)라고도 불림
~> 주종관계(Master/Slave) 필요
~> 버전별로 전송 속도 다름
~> 구하기 힘들어서 비쌈
~> SATA와 SCSI, SAS
SCSI(Small Computer System Interface) | SAS(Serial Attached SCSI) |
서버 또는 워크스테이션용 | SCSI 발전 |
별도 확장카드 필요 | 서버 등의 대형 컴퓨터 |
88핀, 320mb | SATA 규격 가능하지만 반대로는 불가 |
SAS로 대체되는 추세 |
▶ 하드디스크 내부 구조
- 플레터 : 금속 재질이며 반사 가능(래핑처리), 산화철 등의 자성체로 코팅
~> 실린더
~> 헤드
~> 섹터
~> 실린더 x 헤드 x 섹터 = HDD 크기 (과거)
~> 현재는 LBA(Logical Block Addressing) => 논리 블록 주소 지정
- 헤드 : 플래터의 표면에 움직이면서 데이터 R/W
- 스핀들 모터 : 모터로 플레터를 회전
▶ MBR(Master Boot Record) ⭐⭐
- 부팅 과정
▶ 파티션 테이블 Partition Table⭐
- 16byte 4개의 파티션, 64byte
- 4개 이상을 원한다면 마지막 파티션에 확장 파티션 가능
- MBR 영역에 기록되는 파티션 정보는 주 파티션 (부팅 가능)
- 16byte offset 정보 ⭐
▶ 엔디안 Endian
: 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(Byte order)라 함
- 빅 엔디언 (Big-endian) : 큰 단위가 앞에 나옴
~> 유닉스 시스템
~> 가독이 좋지만 CPU 처리에는 느림
- 리틀 엔디언 (Little-endian) : 작은 단위가 앞에 나옴
~> Intel CPU
~> CPU 처리가 빠르지만 가독이 힘듦
▶ 파일의 복사 및 이동 속도 비교
복사 | 이동 | |
같은 파티션 | 느림 | 빠름 |
다른 파티션 | 느림 | 느림 |
▶ Solid State Disk (SSD)
- NASA 물리적 충격에 약한 HDD 대체
- HDD 물리적인 회전 접근, 반도체 메모리에 저장
- 속도 개선, 가격 비쌈
▶ Trim
- HDD는 덮어쓰기(Overwrite)가 가능
- SSD는 덮어쓰기가 불가능
- 파일 삭제 시 특정 블록이 더이상 필요하지 않으면 내부적으로도 처리
▶ Nand
- 반도체의 셀이 직렬
- 데이터 순차로 읽기 때문에 NOR보다는 느림
- 별도의 셀의 주소를 기억할 필요가 없어 용량 늘리기 쉽고 쓰기 빠름
- USB 메모리, SSD
▶ NOR
- 반도체의 셀이 병렬
- 셀 단위 랜덤 액세스이며 읽기 빠름
- 한 셀씩 기록하기 때문에 쓰기 속도 느림
- RAM처럼 실행 가능한 코드 저장
💡실습!
HxD 툴과 FTK Imager 툴을 사용하여 파티션을 복원해보자!
' NTFS 파일 복원하기 '
1. 파티션 테이블 확인
⚠️ 원래 모든 파티션 테이블 값 00으로 되어있었음
2. 복원을 위해서 구해야할 값들 => File System Type, 파티션 시작 주소, 파티션의 총 섹터 수(크기)
우리가 알고 있는 정보는 오로지! 'NTFS', 'FAT32'라는 시그니처 키워드와 'B.O.O.T.M.G.R', 'RRaa'
따라서 'Ctrl + F' 단축키를 통해 텍스트 서치로 해당 섹터로 이동하면 백업본의 위치를 알 수 있다!
3. NTFS 파일 시스템 구조상 'B.O.O.T.M.G.R' 하나 전 섹터가 파티션 위치이기 때문에 'Ctrl + F' 단축키를 통해 텍스트 서치로 해당 섹터로 이동하면 파티션의 위치와 오염된 파일을 알 수 있다!
⚠️ 'BOOTMGR'을 16진수로 변환해서 그 값을 통해 서치해야 나옴!
4. 백업본의 바이트들을 복사해 오염된 섹터에 복사하고 저장하자
5. 그럼 이제, 공식을 통해 사라진 파일의 파티션 크기를 구할 수 있다.
(전체 파티션 크기 682, 111) = (파티션 위치 128) + (파티션 크기 x) - 1
따라서 파티션 크기가 나오고, 0번 섹터 (MBR)로 이동해서 파티션 테이블에 각각 맞는 값을 끼워넣으면 복원이 된다!
⚠️ NTFS 파일 시스템 타입은 '07'
' FAT32 파일 복원하기 '
: 위의 NTFS 파일 복원 과정과 비슷하지만, FAT32 파일 복원에서는 파티션의 크기 정보가 백업본 파일의 0x20~24의 4byte이며, 위치는 백업본 위치의 -6 섹터이다. 나머지는 동일! 참고로 FAT32의 파일 시스템 타입은 '0B'이다.
✏️ 나를 위한 구체적인 공부
Q0. VBR?
A0) 'Volume Boot Record'의 줄임말로 부팅 가능한 파티션(볼륨)의 첫 번째 섹터에 존재. Boot Sector, 볼륨 크기, FAT 위치, $MFT 위치 등 볼륨에 관한 다양한 정보를 포함하고 있음
- VBR이 손상되면 볼륨(파티션)의 정상적 인식이 불가능하며 의도적으로 볼륨의 존재를 숨기기 위해 VBR을 훼손하는 경우 존재
- VBR 손상 시에는 'Backup VBR'을 통해 복구가 가능
- FAT32 파일의 경우 첫 번째 볼륨에서 6번째 위치에 존재하고, NTFS 파일의 경우 볼륨의 마지막 섹터에 존재
NTFS | FAT32 |
볼륨의 마지막 섹터 | 볼륨의 첫 번째 섹터 + 6 |
Q1. NTFS 파일과 구조
A1) NTFS는 'New Technology File System'의 약자로 Microsoft에서 만든 Windows용 파일시스템
- NTFS는 최초의 서버용 파일시스템으로 FAT 파일시스템이 용량의 한계가 있어 대용량 서버 운영체제에 적합하지 않았기 때문
- NTFS 파일 시스템은 중요한 설정 데이터 값들이 모두 파일 형태로 할당됨
- 설정 파일이 별도로 존재하며, 그 파일이 볼륨 어디에 위치해도 상관 x
= 볼륨 전체가 FAT의 DATA 영역처럼 할당가능한 영역으로 됨
but, FTA 파일 시스템에서는 일정한 위치의 구조체 레이아웃에 값들이 들어가고, 그 값들을 참조하여 파일 시스템 설정이 가능한 구조
- 별도로 존재하는 설정파일을 MFT(Master File Table)이라고 부르며, NTFS 구조 중 가장 중요한 부분이라고 할 수 있음
Q2. NTFS 파일 복원할 때 쓰는 공식은 어디서 나온 것인지?
A2) 아는 분 있으면 댓글 남겨주세요 ㅎㅎ ^^......b
Q3. FAT32 파일과 구조
A3)
참고 블로그
오늘의 후기!
: 파일 구조 그림만 이해하면 쉽게 할 수 있는 실습이었다. 다만 파일 구조 그림 이해가 힘들 뿐 ㅎ....
점점 머리가 아프다. ㅜ....ㅜ
'SeSAC > 어플리케이션 보안 & 취약점 진단' 카테고리의 다른 글
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 7일차 (0) | 2023.11.21 |
---|---|
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 5, 6일차 (2) | 2023.11.21 |
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 4일차 (0) | 2023.11.16 |
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 2일차 (1) | 2023.11.15 |
[SeSAC 성동캠퍼스 1기] 어플리케이션 보안 & 취약점 진단 1일차 (0) | 2023.11.15 |