[2024.09.12]
[Hash Function]
> MD2, MD4, MD5(128bit)
> SHA-1(160bit)
> SHA-2(224bit, 256bit, 384bit, 512bit)
> 용도: 무결성 점검
> 사용 도구: md5sum
# md5sum file1
d41d8cd98f00b204e9800998ecf8427e file1
# md5sum file2
d41d8cd98f00b204e9800998ecf8427e file2
# md5sum file3
d41d8cd98f00b204e9800998ecf8427e file3
# md5sum passwd.gz
0488dfcbaff834a72575459c04172d1f passwd.gz
# md5sum passwd
b762102cdb7aad954bc1dc5bf61e4113 passwd
> 해시값 파일 저장
# md5sum file1 > file1.md5sum
> 저장된 해시값으로 검증
# md5sum -c file1.md5sum
# hashdeep -r -c sha256 kali-linux-2024.3-installer-amd64.iso
# md5sum -c file1.md5sum
*md5의 경우 디렉터리는 불가능하다
(보안의 3요소)
> 기밀성: 암호화 <-- 위협 요인: 스니핑
> 무결성: 해시 함수로 검증 <-- 위협 요인: 악성코드, 바이러스
> 가용성: 보안 솔루셩(방화벽, IDS, IPS, UTM)
touch 명령어를 이용하여 file1, 2, 3를 생성한다
파일명과 상관없이 데이터가 들어 있어야 해시 함수의 값이 다르게 적용된다
file1, file3에는 a를 file2에는 b를 입력했을 때 1과 3의 파일 해시 함수는 동일하나,
file2의 경우에만 내용이 다르기 때문에 해시 함수가 다르다
file2도 a라는 값으로 변경시키게 되면 나머지 둘과 해시 함수가 같아지는 걸 볼 수 있다
이런 식으로 파일 저장도 가능하고, -c 옵션을 통해 검증까지 가능하다
file1을 b로 변경시켜 본다
그렇게 되면 file1의 값이 변경되었기 때문에 FAILED가 나오게 된다
반대로 file1.md5sum 파일에서 임의로 수정시킨 다음
비교를 하게 되면 FAILED가 나타나게 되고, 해시 함수가 변경되면 안 된다
etc 디렉터리의 passwd 파일을 복사 후에 gzip으로 압축을 하고 해시 함수를 확인한다
압축 해제 후에 다시 확인해 보면 해시 함수가 다른 것을 볼 수 있다
압축을 하게 되면 압축 헤더가 추가되어 해시 함수에 영향을 끼친다
압축을 하기 위한 헤더 정보들이 악성코드에 심어졌다고 보면 된다
이번에는 디렉터리를 세 개 정도 생성하고, tar 명령어를 이용해 파일과 디렉터리를 압축시킨다
그렇게 되면 현재 압축된 sum.tar가 만들어지면서 화면과 같은 해시 함수를 확인할 수 있다
sum.tar 파일의 해시 값을 tar.sum으로 저장시킨다
그런 다음 tar.sum과 비교하게 되면 같은 해시값이라면 OK라는 확인 문자가 나타난다
sum.tar를 한 번 더 압축시키게 되면 해당 해시값이 나오게 되며
이번에도 tar.sum1 파일에 해시값을 저장하고,
원본 파일과 tar.sum1 파일을 비교했을 때
해시값이 달라지지 않았다면 OK라는 확인 문자를 볼 수 있다
[hashdeep]
> MD5, SHA-256 동시 해시값 출력
# hashdeep -r file1
> MD5 해시값 출력
# hashdeep -r -c md5 file1
> SHA-256 해시값 출력
# hashdeep -r -c sha256 file1
> SHA-256 해시값 출력
# hashdeep -r -c sha256 file1 > sha256.sum
> 파일 해시값 검증(파일)
# hashdeep -a -r -k sha256.sum file1
> 해시값 파일 저장
# hashdeep -r dir1 > dir.sum
> 해시 검증
# hashdeep -a -r -k dir.sum dir1
> 옵션
-a: 검증
-k: 해시값 지정
hashdeep을 이용하여 file1을 읽어들이게 되면 md5 값과 sha256 값이 둘 다 출력된다
각각의 값만 보고 싶을 때는 -c 옵션을 이용하여 값을 출력할 수 있다
file1의 sha256 값만 출력하여 sha256.sum이라는 파일로 저장한다
그런 다음 해당 옵션들을 이용하여 검증을 하게 되면 일치하기 때문에 passed라고 확인된다
그렇지만 이렇게 file1의 내용을 임의로 변경시켜 확인하게 되면
faild로 일치하지 않는다는 문구가 나타나게 된다
이렇게 디렉터리로도 지정이 가능한데,
디렉터리를 지정하게 되면 디렉터리 안에 있는 파일들의 값이 출력된다
이번에는 디렉터리를 dir.sum 파일로 만들어서 확인했을 때 passed라고 확인된다
확인을 위해 dir1 디렉터리의 file1.txt 파일을 찾아서 내용을 변경하려고 한다
file1.txt 파일을 임의로 a라는 값을 입력하고 저장한다
디렉터리 안의 파일 내용을 수정했을 때도 failed가 나타나게 된다
디렉터리로 생성했지만 내부의 파일도 값이 같았기 때문에 변경되면 비교 시 일치하지 않게 된다
따라서 해시 함수의 경우 파일명보다 내용 즉, 데이터가 중요하다는 것을 알 수 있다
강의 소감
이번 강의에서는 디렉터리 및 파일을 생성하여 해시 함수를 비교하는 실습을 진행했다
처음에는 md5sum으로 해시 함수를 확인하고, 따로 파일을 저장하여 비교도 했다
두 번째로는 hashdeep을 이용하여 옵션을 선택하고 원하는 값이 출력되도록 연습했다
이러한 해시 함수 출력 및 비교를 통해 해시 함수는 파일명보다 데이터가 중요하다는 것을 알게 되었다