본문 바로가기
  • 시 쓰는 개발자
CS 개념/컴퓨터 보안

컴퓨터보안 - 실습내용 간단 정리 (1)

by poetDeveloper 2024. 4. 25.

[1주차] 패스워드 크래킹

>> 패스워드 크래킹 종류
- Brute-force cracking
- Dictionary attacks
- Pattern checking

>> 패스워드 크래킹 도구
 - Cain and Abel
- John the Ripper
- Hydra
- ElcomSoft


[2주차] 시저암호, 전치암호 크래킹

>> 대칭키 암호의 분류
- 블록 암호 : 메시지를 특정한 크기의 블록으로 나누어 각각 암호화
- 스트림 암호 : 메시지를 비트/바이트 단위로 바로바로 암호화

>> 기본적인 암호 설계 기법
- 치환 암호(substitution cipher) : 각 문자를 다른 문자로 치환하여 암호화
ex) 시저 암호 (Caesar Cipher), 단일 치환 암호, 플레이페어(Playfair) 암호, …
- 전치 암호(transposition cipher) : 평문의 위치를 재배치하여 암호화 (abc -> bac; word -> drwo)
ex) 단순 전치 암호, 레일 펜스(Rail Fence) 암호

 


[3주차] 메모리 세그먼트, SetUID program

>> 메모리상 5가지 세그먼트 분류
- Text : 바이너리 머신코드
- Data : 초기화 된 static 변수
- BSS : 초기화 안된 static 변수
- Heap : 동적 세그먼트 공간
- Stack : 서브루틴 처리용

>> 세그먼트 방식

가상주소(Virtual Address)인 논리적 주소(Logical Address)를 사용하여 프로그램에 따른 상대적인 위치를 지정한 후, 시작 위치(Offset)를 더하는 방식으로 메모리의 물리적인 주소(Physical Address)에 접근하는 방식이다.

>> SetUID Program
- 프로그램이 소유자 권한에서 실행되는데, 잠시 그러한 권한을 부여해 프로그램을 실행시키는 방식이다.

- chmod 4775 abcd (root로 로그인 안했으면 sudo chmod)

     abcd 파일에 setuid(4)를 하는데, owner에게 rwx(7), group에게 rwx(7), others에게 rx(5) 권한 설정한다.

- chown root abcd (root로 로그인 안했으면 sudo chown)

     abcd 파일의 소유자를 root로 바꿈

 


[4주차] Buffer Overflow

>> ASLR(주소 공간 레이아웃 무작위화) 해제하여 BOF 가능하게 하기
sysctl -w kernel.randomize_va_space = 0

>> ExecShield 해제하기 : ExecShield는 BOF 취약점 패치인데 주로 코드 세그먼트 제한을 활용하며 셸코드의 삽입 및 실행의 난이도를 증가시킨다. 다음과 같이 해제한다.
sysctl -w kernel.exec-shield = 0

>> 스택가드 해제하기
gcc로 컴파일 시 스택 가드 해제를 위해 –fno-stack-protector 옵션을 사용.

>> perl 명령
프로그램에 arg 전달 시, 쉽게 전달 가능 + \x08 등을 문자열이 아닌 바이트로 전달 가능 

>> NOP 명령어
\x90 혹은 0x90

 


[5주차] 파일검증, 바이러스 서명, 악성프로그램 찾기, 루트킷
>> 파일검증
- 특정 알고리즘을 이용하여 파일의 인증성(authenticity)과 무결성(integrity)을 확인하는 과정이다.
- 파일 무결성 검사는 원본 파일에 대한 변형이나 수정여부를 확인하는 것이다. 
- FileVerifier++ (FV)는 파일의 check sum 혹은 hash값을 계산해주는 프로그램이다.

>> 바이러스 서명
- 특정 문자열 파일에 넣으면 바이러스로 판단하는 것. 바이러스 파일 아닌데 갑자기 백신 프로그램이 실행됨