이전에 우리가 클러스터에 대해서 알아보았는데요, 

조금더 깊게 들어가 보도록 하겠습니다. 

 

Cluster 

여러개의 섹터(하드디스크이 물리적 최소 단위)를 묶은 단위 입니다.

섹터 단위로 입출력을 처리하면 시간이 오래걸리기 때문에 여러개의 섹터를 한번에 묶어서 처리 합니다. 

여기서 주의 할 점은 섹터는 물리적인 최소 단위를 의미하고 클러스터는 논리적인 최소 단위를 의미합니다.

 

그럼 클러스터 안에 여러개의 클러스터가 있을텐데 그럼 클러스터 보다 데이터의 양이 작으니끼 

슬랙들이 생기게 되는데 램슬랙과 파일 슬랙이 있습니다. 

 

램슬랙은 쉽게 말해서 하나의 섹터 안에서 (512byte) 모든 파일이 딱 맞게 떨어지지는 않을 것입니다.

물론 클러스터 단위로도 맞게 떨어지지는 않을 것 입니다. 

하지만 실제로 사용되는 섹터 입니다.(일부분이 사용되기 때문)

 

섹터 내부에서 사용되지 않은 영역은 램슬랙 

클러스터 내부에서 사용되지 않은 부분을 파일슬랙이라고 합니다. 

 

 

 

만약에 클러스터 크기를 4096byte를 지정했을때, 100byte의 데이터를 저장하는 경우, 

클러스터의 크기만큼 할당이 됩니다. 그러면 낭비가 아니야??

 

맞습니다.

 

3996byte가 낭비되지만 그럼에도 불구하고 디스크 입출력 횟수를 줄이기 위해서 클러스터 단위를 사용합니다.

4MB(4096KB)를 저장할 때 4KB크기의 클러스터를 사용하게 되면 1024번 입출력을 수행하게 되지만 

4MB(4096KB)를 저장할 때 512Byte 크기의 클러스터를 사용하게 되면 8192번 수행하게 됩니다. 

섹터 단위로 처리하면 이렇게 시간이 오래걸린다는 단점이 있습니다.

 

낭비되는 부분이 있지만 입출력의 속도가 더 중요하다고 판단을 하기 때문입니다.

그래서 여러개의 섹터를 묶어서 클러스터 단위로 관리를 하게 됩니다.

구분 장점  단점
클러스터 크기가 작음 낭비되는 영역이 적다(Slack) 파일 정보 관리 영역이 커진다
클러스터 크기가 큼  클러스터 처리 부담이 적다 낭비되는 영역이 많다(Slack)

 

이번에는 파일시스템 클러스터를 조금 더 심화적으로 알아보았는데 

다음 포스팅에서는 슬랙 영역을 보도록 하겠습니다.

지난 포스팅에선 하드디스크의 구조와 CHS 방식을 알아보았습니다

하지만 CHS 방식은 용량제약이 발생하게 됩니다. 

 

 

BIOS 보다 ATA 표준이 더 많은 수의 비트를 할당을 받습니다만 중첩되는 부분만 가능했기 때문에

CHS에 더 많은 섹터를 할당하기 위해서 BIOS 를 통해 전달되는 비트를 변환하여 지정함으로 

용량증가를 했지만 그래도 한계가 있었습니다. 

 

그래서 LBA 방식이 등장하게 되었습니다.

 

LBA - Logical Black Addressing

저장매체 용량의 증가에따라서 CHS를 대체하기 위한 방식입니다. 

물리적인구조와 상관이 없이 모든 섹터를 선형적으로 배열하여 하드디스크를 논리적인 주소로 

바꾸어서 데이터를 읽고 쓰자라는 것 입니다. 

 

그래서 논리주소와 물리주소의 맵핑은 저장 장치의 컨트롤러가 담당하여

물리적인 주소가 논리적인 주소로 맵핑이 가능해졌습니다.

이렇게 해서 총 128PB까지 저장이 가능하게 되면서,  충분히 하드디스크의 용량으로 사용이 가능해졌습니다.

 

이번에는 이렇게 하드디스크의 LBA 방식을 알아보았습니다. 

다음 포스팅에서는 파일시스템에 대해서 조금더 알아보도록 하겠습니다. 

 

 

 

 

하드디스크의 구조를 보면 이렇습니다. 

그럼 섹터는 무엇이냐?

 

플래터는 트랙으로 구성되어 있는데 섹터는 트랙이 섹터로 이루어져 있습니다.

섹터는 하드 디스크가 헤더를 통해서 읽는 논리적 기본단위 입니다. 

즉, 하드디스크에서 데이터를 논리적 단위로 처리를 한다는 이야기입니다. 

섹터가 모인것이 트랙이되고 트랙이 모이면 플래터가 됩니다.

 

섹터 

데이터 기록의 가장 기본 단위

총 571bytes에서 섹터의 위치를 구분하기 위한 고유번호 저장(59byte)

실제 데이터 저장으로 사용되는 영역은 512byte 입니다. 

 

 

CHS (Cylinder Header Sector)방식 

디스크의 물리적인 구조에 기반한 방식 입니다.

초기 ATA 표준과 BIOS의 지원 비트의 차이로 인하여 최대 504MB까지만 지정이 가능합니다.

이후에 BIOS 비트의 확장으로 8.1GB 까지 지원이 가능하게 되었지만

대용량 디스크는 지원이 불가능 합니다.

ATA-6 부터 표준에서 제외, LBA 방식이 새롭게 대두 되기 시작했습니다.

 

만약에 CHS(21,3,20) 라고 가정을 한다면 

3번째 헤드를 21번째 실린더의 20번째의 섹터로 이동한 후 정해진 크기 만큼 읽는것을 뜻합니다

이렇게 하면 특정 위치에서 데이터를 읽어올 수 있을 것입니다.

 

이번에는 하드디스크 구조를 알아보았습니다. 

다음 포스팅에서는 LBA방식을 알아보겠습니다.

이번에는 파일시스템을 알아보도록 하겠습니다. 

파일시스템이 필요한 이유

기본적으로 원하는 파일을 읽고 쓰고 하는 기본적인것들 부터 

필요한 데이터를 검색하고 저장 및 관리하는 전반적인 것들이라고 보시면 됩니다. 

만약 파일이 많이 없다면 필요없겠지만 파일들을 효과적으로 관리하기 위해서 필요하다라고 보시면 됩니다.

 

파일시스템이란?

디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식 

사용자에게 파일과 디렉터리를 계층구조로 데이터를 저장하도록 하는 메커니즘 

파일의 위치를 조직화 하고 사용자의 데이터를 구조적으로 관리가 가능합니다.

 

 

파일시스템의 종류

파일시스템은 운영체제마다 다 상이한데 

우리가 보편적으로 많이 쓰는 윈도우에서는 NTFS파일 시스템을 사용하고 있습니다. 

(윈도우 xp 이후에는 FAT -> NTFS)

 

 

=>??? 파일시스템이 왜이렇게 많냐, 하나만 쓰면 안됨???

우리가 컴퓨터를 사용할려면 운영체제가 있어야 하는데 이 운영체제에서 저장메체에서 있는 

데이터를 읽고 쓰고 관리를 하는데 운영체제에 딱 맞는 파일시스템이 있어야만

관리 및 최적화에 효율적일 것입니다.

 

파일 시스템의 구조 

파일시스템의 기본적인 동작은 운영체제가 각 파일을 사용하기 위해서 저장되어 있는 위치로 

접근하여 해당 데이터를 읽도록 해야겠죠?

또한 데이터의 위치를 파악하기 위해서

사용자가 저장한 파일의 목록을 확인할 수 있도록 해야할 것입니다. 

 

 

 

구조를 도식화 해보면 위의 그림과 비슷할 것입니다.

우리가 생성한 파일의 내용은 데이터 영역에 저장이되고 메타 영역에는 

파일관리를 위한 파일의 이름 , 위치, 크기, 시간 정보등이 기록이 됩니다. 

 

즉 , 사용자가 생성한 파일의 내용은 데이터 영역에 기록이되고 ,

메타 데이터들은 메타 영역에 저장이 됩니다. 

 

파일 시스템은 이러한 메타 정보를 유지 및 관리를 해서

파일 시스템을 효과적으로 관리를 하는 것입니다.

 

데이터 영역은 어떤 파일시스템을 사용하던지 비슷할것 입니다. 

하지만 메타 데이터들은 어떤 파일시스템이 어떻게 관리하느냐에

따라서 효율적인지 아닌지 나눌수 있습니다.

 

메타영역에서 메타데이터들을 저장하고 관리를 하면서

파일시스템이 효율적으로 동작 하도록 도와주는 역할을 하고 있습니다. 

 

물리적 측면 : 섹터의 나열 

논리적 측면 : 클러스터 , 파일 , 폴더 

 

파일시스템의 구성요소를 보시면 물리적인 측면에서 보면

섹터들의 나열이라고 볼 수 있습니다

 

하지만 논리적인 측면으로 바라보면 클러스터 ,파일, 폴더 가 있습니다. 

 

클러스터?

파일시스템에서 저장장치에 데이터를 일고 쓰는 논리적인 기본단위이면서 가장 작은 단위입니다. 

NTFS에서는 클러스터를 관리할때 기본적으로 4096byte씩 크기를 저장한다고 합니다.

 

하지만 모든 파일이 4096으로 나누어떨어지지는 않을 것 입니다. 

그러면 실제로 데이터가 저장되있는 공간이 있을것이고 비어있는 공간이 있을겁니다. 

이 빈공간을 슬랙이라고 합니다,

 

 

그러면 우리가 지금 클러스터를 알아보았는데 그러면 섹터는 무엇인가? 알아볼텐데요 

섹터를 설명하기 전에 하드 디스크를  먼저 한번 살펴보도록 합시다. 

우리가 실제로 사용할때 하드 디스크를 오픈하지는 않지만 내부는 아래와 같이 생겼습니다. 

 

 

하드디스크는 가장 널리 사용되고 있는 비 휘발성 저장장치 입니다. 

구조를 보시면 헤드가 있고 스핀들 모터를 통해서 플래터가 돌아가게 됩니다 

그리고 엑츄에이터 암을 통해서 헤드에 있는 정보들을 읽어 오는데 여기서 총 2가지의 커넥터를 

연결하게 되는데, 데이터 관련과 전원 입니다.

 

지금 현재 많이 쓰는 방식은 SATA (Setial Advanced Technology Attachment) 

방식을 많이 쓰고 있지만 예전에는 IDE(Integrated Drive Electronics) 방식도 사용을 했습니다.

 

현재 서버용으로는 SCSI(Small Computer System Interface)를 많이 사용한다고 합니다. 

SCSI 특징은 전원이 켜져있는 상태에서도 하드를 제거했다가 다시 연결할 수 있습니다. 

 

RAID는 여러개의 하드디스크를 한꺼번에 쓰기에 용이합니다 

단순이 합친다기 보다는 합쳐서 사용을 할때 오류가 났을때 다시 복구를 위한 장치를 한다던가

다른 기능을 추가 할 수 있습니다.

 

이렇게 이번에는 파일시스템을 간단히 알아보았습니다.

다음번엔 하드디스크의 구성요소를 알아보도록 하겠습니다. 

아래의 예제 코드를 살펴봅시다. 

 

#include <stdio.h>
#include <unistd.h>
int main(void) {
    char win[4];
    int size;
    char buf[24];
    
    scanf("%d", &size);
    read(0, buf, size);
    if (!strncmp(win, "ABCD", 4)){
        printf("Theori{-----------redacted---------}");
    }
}

 

위의 코드를 보면 

win이라는 변수에 4만큼의 버퍼를 할당합니다.

buf라는 변수에 24만큼의 버퍼를 할당합니다. 

그 다음 scanf 함수를 통해서 size에 값을 입력 받고나서 read함수를 통해서 값을 읽어옵니다. 

저번에 보았던 것 처럼 이것도 24만큼의 크기보다 큰 데이터를 입력해준다면 

오버플로우가 발생하는것을 볼 수 있습니다. 

 

 

또 다른 예제를 보도록 합시다.

아래의 예제코드를 한번 더 볼까요?

 

#include <stdio.h>
int main(void) {
	char buf[32] = {0, };
	read(0, buf, 31);
	sprintf(buf, "Your Input is: %s\n", buf);
	puts(buf);
}

 

이 코드를 보면 buf에 32만큼의 버퍼를 할당하고 있습니다. 

read 함수를 이용해서 buf를 읽어오고 있습니다. 

근데 여기서 sprintf 함수부분을 보면 Your Inout is : 라는 문자열이 보입니다. 

 

sprintf 함수에서 buf라는 곳에 Your Inout is : 라는 문자열이 들어갔습니다. 

(buf의 공간 에서 출력하고 있기때문이죠)

그럼 현재 32만큼의 버퍼가 들어갔는데 이 문자열의 크기를

빼주면 지금 현재 메모리 공간 크기를 알 수 있습니다.

 

32(총 buf의 버퍼크기) - 15(sprintf를 통해서 들어간 문자열의 크기)

= 17(총 남은 버퍼의 크기)  17만큼의 공간이 남아 있습니다.

그렇다면 read에서 buf의 크기를 31만큼 읽어오고 있습니다.

그럼 31byte를 다 채우게 된다면 17byte의 크기를 넘어서기 때문에 오버플로우가 발생합니다.

(정말쉽죠?)

 

 

이번에는 이렇게 고정된 크기의 버퍼보다 더 긴 데이터를 입력받아서

오버플로우가 발생 하는 것을 알아보았습니다.

 

해당주소를 참고 하였습니다.

https://dreamhack.io/lecture/curriculums/2

'Theory > Pwnable' 카테고리의 다른 글

How to Assembly code in Linux (리눅스에서 어셈블리 사용)  (0) 2023.11.06
찬희의 포너블 기초 Stack Overflow 1  (0) 2021.09.29
Shellcode list  (0) 2021.09.26
Pwn tools 소개 2  (0) 2021.09.22
Pwntools 소개 1  (0) 2021.09.14

이제 GDB 사용법 및 Pwntools 사용법을 알아보았습니다. 

그러면 이제 본격적으로 한번 포너블을 배워보도록 하겠습니다. 

 

 

Buffer Overflow? 

보통 포너블을 처음 시작할때 버퍼 오버플로우 취약점을 알아보는데요

이번에는 이 취약점을 알아보도록 합시다. 

 

C언어에서 버퍼라고 하면 지정된 크기의 메모리 공간을 의미합니다 

오버플로우는 그 의미 그대로 원래의 버퍼사이즈보다 더 큰 데이터 값을 저장해서

버퍼 즉 메모리 공간이 넘쳐서 다른 메모리 공간을 침범해버리는 취약점 입니다. 

 

일반적으로 발생하는 위치에 따라서 부르는 명칭이 조금 다릅니다.

여기서 알아볼것은 스책 오버플로우 입니다.  (당연히 스택에서 발생하는 취약점이겠죠??)

지역변수가 할당되는 스택 메모리에서 오버플로우가 발생하는 경우 입니다.

 

예제코드를 한번 보겠습니다. 

 

#include<stdio.h>

int main(void)
{
	
    char buf[16];
    gets(buf);
    
    printf("%s",buf);
    return 0;
}

 

자 여기서 buf라는 배열에 16이라는 버퍼 사이즈를 지정해주었습니다. 

그럼 gets함수를 통해서 입력을 받아오게 되는데

 

gets 함수는 사용자가 개행을 입력하기 전까지 입력했던 모든 내용을 저장하게 됩니다. 

그말은 16보다 사이즈가 크더라도 개행문자가 오지않으면 전부 저장한다는 이야기가 됩니다.

 

버퍼사이즈는 16이지만 이보다 큰 데이터의 크기를 입력해버리면

오버플로우가 발생 할 것입니다.

 

보통 길이 제한이 없는 API 함수들을 사용하거나 버퍼의 크기보다 입력받는 데이터의 크기가 

클 경우 발생하게 됩니다.

 

 

여기서 보면 Stack smashing detected 라는 문구가 나오게 됩니다.

스택영역에서 오버플로우가 일어났음을 의미합니다.  

생각했던대로 16보다 큰 사이즈를 입력하니까 오버플로우가 일어났습니다. 

gets 함수에서 버퍼의 크기를 검증하지 않았기 때문입니다.

 

이번엔 좀더 어려운 예제코드를 보도록 합시다.

 

// stack-2.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int check_auth(char *password) 
{
    int auth = 0;
    char temp[16];
    
    strncpy(temp, password, strlen(password));
    
    if(!strcmp(temp, "SECRET_PASSWORD"))
        auth = 1;
    
    return auth;
}

int main(int argc, char *argv[]) 
{
    if (argc != 2) 
    {
        printf("Usage: ./stack-1 ADMIN_PASSWORD\n");
        exit(-1);
    }
    
    if (check_auth(argv[1]))
        printf("Hello Admin!\n");
    else
        printf("Access Denied!\n");
}

 

main 함수에서 argv[1]을 함수의 인자로 전달하고 나서 return을 받아오는데

그 결과가 1이면 Hello Admin을 출력하고 0이면 Access Denied를 받아옵니다.

 

check_auth 함수를 보면 일단 auth를 0으로 초기화 합니다.

그리고나서 temp라는 배열에 16이라는 버퍼를 할당해주고 있습니다.

strcmp로 temp의 값을 password로 복사를 한다음, password의 길이를 측정합니다.

그리고 temp와 SECRET_PASSWORD와 일치하면 1을 리턴합니다. 

 

자 그럼 여기서 핵심부분은 check_auth함수라고 할 수 있습니다. 

 

strncpy(temp, password, strlen(password));

 

이 부분을 보면 temp가 복사를 할때 정해진 크기 16버퍼 만큼 복사하는것이 아닌 

인자로 전달된 password의 문자열 만큼 복사합니다. 

따라서 이것은 16보다 큰 문자열을 인자로 보내준다면 오버플로우가 날 것 입니다.

 

그리고 해당 코드를 보면 아래와 같은 코드가 있습니다.

 

if (check_auth(argv[1]))
        printf("Hello Admin!\n");

 

temp 버퍼 뒤에 auth 값이 있기 때문에 해당 값을 인위적으로 다른 값으로 바꾼다면

항상 이 코드의 값은 참이 될 것 입니다.(0이 아니기 때문에)

 

 

정상적으로 오버플로우가 발생합니다. 

이렇게 크기 검증을 하지 않은경우 오버플로우가 발생합니다. 

 

이런 경우가 1가지 있고,

다른 한가지는 해당 버퍼의 사이즈보다 큰 데이터를 입력했을때 입니다.

 

이번에는 길이나 크기를 검증하지 않은 함수로 인해서 발생하는 오버플로우를 알아보았습니다.

해당 주소를 참고 하였습니다.

 

https://dreamhack.io/lecture/curriculums/2

 

System Exploitation Fundamental

리눅스 시스템 해킹

dreamhack.io

 

'Theory > Pwnable' 카테고리의 다른 글

How to Assembly code in Linux (리눅스에서 어셈블리 사용)  (0) 2023.11.06
찬희의 포너블 기초 Stack Overflow 2  (0) 2021.09.29
Shellcode list  (0) 2021.09.26
Pwn tools 소개 2  (0) 2021.09.22
Pwntools 소개 1  (0) 2021.09.14

개인정보보호법

개인정보보호법은 개인정보의 수집 유출 오용 남용으로 부터 사생활의 비밀등을 

보호함으로써 국민의 권리와 이익을 증진하고 나아가 개인의 존업과 가치를 구현하기 위하여 

개인정보 처리에 관한 사항을 규정함 -> 2011.3.29일 제정 후 2011.9.30일 시행 

 

개인정보 실태점검 

행정자치부 개인정보보호합동 점검과는 2013년 부터 본격 실시된 개인정보 실태

점검을 통한 노하우를 바탕으로 2015년에는 현재 총 380만개 사이트를 8개 분야로 나누어 

점검할 예정 

 

스피어 피싱 

특정 인물이나 집단을 겨냥해 이루어지는 개인정보 탈취 및 악성코드 유포 방식

주로 회사의 고위간부들이나 국가에 중요한 업무를 담당하고 있는 사람들이 스피어 피싱의 

주요 공격대상이 된다.  사회 공학적인 방법을 유도 

표적 공격에 사용된 스피어 피싱 이메일의 첨부 파일 유형도 바뀌고 있는데 과거에는 exe 파일

위주로 공격이 되었다면 최근에는 문서형 악성코드가 증가

 

피싱의 진화된 형태로 불특정 다수가 아닌 특정인을 타겟으로 정해놓고 맟춤형 공격을 

진행하는 만큼 공격대상이 극히 제한적이며 정교한 공격이 가능해짐 

 

랜섬웨어

PC에 저장된 데이터를 암호화 한 후 복호화 키를 댓가로 몸값을 요구하는 악성코드

오래전부터 발생한 방법이지만 이러한 유형이 많아짐 

 

APT

과거에 표적형 공격의 한 유형

공격대상은 명확하고 사용가능한 모든 방법을 동원하여 목적을 달성

목적이 달성 될때까지 지속적인 해킹 공격을 시도 

 

'Project > Security Overview' 카테고리의 다른 글

정보 보호 개론 1차  (0) 2021.09.29

정보보안 이란?

자동화된 정보 시스템 내의 자원이나 자산 -> 기밀성 / 무결성 / 가용성을 보존하기 위해 행해지는 활동

(하드웨어 소프트웨어 및 데이터 통신, 네트워크 등등)

 

해킹 

전자 회로나 컴퓨터의 H/W, S/W 네트워크 등 각종 정보 체계가 본래의 설계자나 관리자

및 운영자가 의도하지 않은 동작을 일으키도록 하거나 정보를 열람 또는 복제 가능하게 하는 행위

 

->  불법적으로 하면 크래킹 

 

보안의 3대 요소

기밀성 : 인가된 사용자만 정보 자산에 접근하는것 (방화벽, 암호, 패스워드 등)

 

무결성 : 적절한 권한을 가진 사용자가 인가한 방법으로만 정보를 변경 할 수 있도록 하는것

 

가용성 : 필요한 시점에 정보 자산에 대한 접근이 가능해지도록 하는것

 

 

'Project > Security Overview' 카테고리의 다른 글

정보 보호 개론 2차  (0) 2021.09.29

이번에는 포렌식의 역사에 대해서 설명해보고자 합니다

초기의 디지털 포렌식은 약 40년 정도의 역사를 가지고 있는데 ,

주로 데이터 복구에 초점이 맞춰졌습니다.  법 집행 기관의 컴퓨터 전문가에 의해

수행되는 특별한 전문 분야였고, 이 시기에는 컴퓨터가 그렇게 발전하는 시기가 아니었기 때문에

저장용량도 작고  범죄흔적이 많이 남아있었습니다. (안티 포렌식이 발전하기 전)

 

디지털 포렌식의 황금기 

컴퓨터가 용량이 크지도 않고 빠르지도 않았고 분석하기에도 많은 양은 아니었습니다

그래서 윈도우가 보급되고 윈도우만 연구하는 시기였습니다. 

상대적으로 작은 file foramt이 연구의 대상이 되었으며 용의자가 소유한 한 대의 컴퓨터를 대상으로

분석을 진행을 하였습니다. 이 후 기술적으로 발전하면서 데이터의 양과 기기도 발전을 하게 되었습니다.

 

하지만 지금 현재는. . .

 

클라우드 기술을 활용해서 증거 수집이 어려워졌고, 

분석 대상의 기기가 다양해지면서 안티 포렌식 기법도 증가하게 되면서

관련 법제도로 인하여 적용범위가 제한이 됩니다. 

이로 인하여 수사에 제한이 걸리게 되고 데이터의 양은 많아지면서 상당히 어려워졌습니다.

그만큼 연구가 필요하다는 이야기가 될수도 있을것 같습니다. 

 

디지털 포렌식 동향

안티포렌식의 등장 

완전 삭제 / 암호화 / 스테가노 그래피 등등  

일반사용자들이 이용하기 어려움 

 

디지털 포렌식 분야의 연구 증가 

대학 / 대학원 학위 과정 

로펌 /컨설팅 회사 

학회 나 DFC - 대회 

 

디지털 포렌식의 시장은 당연히 점점 증가 하고 있으며

전자기기의 종류나 양도 늘어나고 있기때문에 연 평균 10%이상 늘어나고 있다고 합니다.

(앞으로도 증가할것 같습니다.) 

가장 큰 목적은 법정에 제출하는것이지만 최근에는 국방, 의료 , 교육, 물류 등등

다양한 분야에서도 디지털 포렌식 기술이 요구되고 있습니다. 

기술 발전에 따라서 디지털 포렌식 기술은 산업 전 분야에서 지속적인 성장을 기대해 볼만 합니다.

 

특히나 개인 사이버 범죄 수사의 모바일 포렌식의 활용도가 증가하고 

스마트폰의 통화기록, 문자 메세지, 이메일 아이디 등등 수많은 개인정보가 저장이 되기 때문이죠

하지만 지속적으로 광범위하게 등장하는 모바일 기술이나 펌웨어 제조사의 각기 다른 하드웨어

및 소프트웨어가 사용이 되는데 이것을 어떻게 효율적으로 활용하는것이 현재 포렌식의 새로운 과제

라고 할 수도 있을것 같습니다. 

 

당연히 새로운 형태의 디지털 포렌식 조사 및 절차 방법이 필요합니다.

클라우드 컴퓨팅은 기존의 컴퓨팅 환경과 다른 특징들을 가지고 있습니다. 

용의자의 컴퓨터 한 대에서만 되는것이 아니기 때문입니다, 

앞으로도 빅데이터나 머신러닝 등등 여러 기술이 나올것인데 이에 대해서

새로운 대책이 필요할것입니다.

 

이번에는 전반적인 포렌식의 발전 과정과 배경에 대해서 알아보았습니다.

이전에 한번 설명했던 디지털 증거에 대해서 

심화적으로 다뤄볼려고 합니다. 

 

그럼 알아볼까요?

 

디지털 증거란?

이름에서 알 수 있듯이 전자적 형태의 증거물을 의미 합니다. 

전자적 형태로 유통되거나 저장되어있는 데이터로 사건의 발생 사실을 입증하거나 

반박하는 정보 및 범행의도나 알리바이와 같은 범죄의 핵심적인 요소를 알 수 있습니다.

아래와 같은 것들이 있습니다.

 

컴퓨터 시스템 

하드디스크 , USB 와 같은 휴대용 저장장치(외장하드,SSD 등등)

 

통신 시스템

네트워크 정보 나 인터넷, 방화벽, IDS등의 로그 데이터

 

임베디드 시스템

휴대폰, PDA, 네비게이션, mp3 등등 


디지털 증거의 종류

위에서 간단하게 한번 디지털증거가 크게 어떤것들이 있는지 알아봤는데

그럼 세부적으로는 어떤것들이 있을까요?

 

1. 문서파일 

한글 , 훈민정음, PPT, MS워드 등등 - 멀티키디어 데이터 (동영상/사진/Mp3)

 

2. 전자메일 

이메일 송 수신 정보 및 데이터 정보

 

3. 네트워크 데이터(패킷 등등)

 

4. 소프트웨어

바이러스 제작 도구 및 안티 포렌식 도구 

 

5. 로그데이터 

인터넷 / 방화벽 / IDS 등의 로그데이터

 

6. CCTV 영상 데이터 

7. 임베디드 시스템 저장 정보 

8. 교통카드 및 신용카드, 휴대폰 사용 기록 등


디지털 증거에는 2가지로 분류를 할 수 있겠습니다

쉽게 말해서 자동으로 생성되는 증거와 그렇지 않은 증거입니다. 

인터넷 사용기록이나 최근 사용한 파일같은 경우에는 우리가 일일히 저장하거나 생성하지 않아도 

알아서 기록이 되는 반면에 문서파일이나 이메일 같은 경우 우리가 만들어서 저장을 하거나 만들어서 보내지 않으면

자동으로 생성되거나 만들어지지 않습니다.

 

자동으로 생성되는 디지털 증거 

인터넷 사용기록 

방화벽 로그 

운영체제 이벤트 로그 

최근 사용한 파일 

 

인위적으로 생성되는 디지털 증거

문서파일

동영상

사진 / MP3

전자메일

소프트웨어 

암호 데이터


휘발성? 비휘발성?

또 하나의 기준을 이야기 하자면 포렌식에서 절대 빠질 수 없는 휘발성 데이터와 비휘발성 데이터 입니다.

말그대로 휘발성 데이터는 지금 이 순간이 아니면 사라지는 데이터 입니다. 

비휘발성은 반대로 지금 이 순간이 아니어도 항상 저장되어있는 데이터 입니다.

 

휘발성 데이터 

프로세스 

예약 작업 

인터넷 연결정보 

네트워크 공유 정보 

메모리 정보 

 

비휘발성 데이터

파일 및 파일시스템 

운영체제

로그 데이터

설치된 소프트웨어


디지털 증거의 특징 

매체 독립성 

디지털 증거는 유체물이 아니기 때문에 눈에 보이지 않습니다. (형체를 가지지 않죠)

컴퓨터가 없으면 볼 수 없습니다.

정보는 값이 같다면 어느 매체에 저장되어있든 항상 동일한 가치를 지니게 됩니다.

동일한 사진이 하드에 있든 SSD에 있든 같은 사진입니다. 

 

비가시성 / 비 가독성 

디지털 저장매체에 저장된 디지털 증거 그 자체는 사람의 자각으로 바로 인식이 불가능합니다. 

일정한 변환절차를 거쳐서 모니터 화면으로 출력되거나 프린터로 출력하여 확인을 하게되는데

예를 들어서 우리가 벡터값으로 이미지를 구별하지는 못하지만

이것을 프린트를 하게되면 이미지를 구별 할 수 있습니다

따라서 디지털 증거와 출력된 자료가 동일한지 확인이 필요합니다.

 

취약성 

디지털 증거는 삭제나 변경등이 용이합니다. 

하나의 명령만으로 하드디스크 전체를 포멧하거나 파일삭제가 가능합니다.

또한 파일을 열어보는 것만으로도 파일속성이 변경될 수 있습니다.

그래서 항상 수사기관에 의한 증거조작 가능성을 배제 할 수 없습니다,

그렇기 때문에 항상 무결성의 원칙이 지켜져야 한다는 이야기가 됩니다.

 

대량성 

저장 기술의 발전으로 방대한 분량의 정보를 하나의 저장매체에 모두 저장 할 수 있게 되었습니다.

회사의 업무처리에 있어서 컴퓨터의 사용은 필수적이고 회사의 모든 자료가 컴퓨터에 저장됩니다.

그 결과 수사기관에 의하여 컴퓨터가 압수되는 경우 업무 수행에 지장을 줄 수도 있습니다. 

 

전문성 

디지철 방식으로 자료를 저장하고 이를 출력하는데 컴퓨터 기술과 프로그램이 사용되겠죠?

전문적인 기술이 사용되기 때문에 디지털 증거의 압수 및 분성에 있어서 디지털 포렌식 전문가는 

필수적으로 필요하겠죠? (디지털 증거에 대한 신뢰성의 문제)

 

디지털 증거는 공간의 벽을 넘어서 전송이 되고 있으며, 그 결과 관련법률을 어느정도까지 

인정을 해워야 하느냐가 문제가 됩니다. 국경을 넘는 경우에는 국가의 주권 문제도 생기기 마련입니다.

따라서 상황에 맞게 잘 판단하는것이 좋겠습니다.

 

이렇게 이번에는 디지털 증거에 대해서 알아보았습니다.

'Theory > Forensic' 카테고리의 다른 글

찬희의 디포이야기 - 파일시스템 기초  (0) 2021.10.01
찬희의 디포이야기 4  (0) 2021.09.28
찬희의 디포이야기 3  (0) 2021.09.28
찬희의 디포이야기 2  (0) 2021.09.28
찬희의 디포이야기 1  (0) 2021.09.28

+ Recent posts