Post

시스템 보안 이론 1

리눅스의 UID & GID

SetUID

  • SetUID가 설정된 파일은 실행 시 파일 소유자의 권한으로 실행됨
  • 실행 파일의 소유자 권한으로 프로그램을 실행할 수 있도록 하는 특수 권한

SetGID

  • SetGID가 설정된 파일은 소유 그룹의 권한으로 실행됨
  • 그룹의 권한으로 프로그램을 실행할 수 있도록 하는 특수 권한

해시 함수

해시 함수 다이어그램

  • 임의의 데이터 길이를 고정된 길이 값으로 변환하는 함수 (digest라고도 함)

Salt

  • 해시 함수에 추가되는 임의의 값으로, 보안을 강화하고 해시 충돌을 줄임

해시 함수의 특징

  1. 단방향성 : 해시 값으로 원본 데이터 복원 불가
  2. 충돌 저항성 : 서로 다른 두 입력 데이터가 동일한 해시 값을 갖지 않도록 설계됨
  3. 효율성 : 데이터의 크기에 관계없이 빠르게 해시 값을 계산 가능

해시 함수의 활용

  1. 데이터 무결성 검증 : 파일이나 메시지의 변경 여부를 확인
  2. 암호 저장 : 사용자 비밀번호를 안전하게 저장
  3. 디지털 서명 : 전자 문서의 위/변조 방지

암호 해독

  • 암호화된 데이터를 원래 데이터로 복원하는 과정 (크래킹으로 볼 수 있음)

암호 해독의 필요성

  1. 정보보안 : 암호화된 데이터를 해독해 중요 정보 보호
  2. 범죄수사 : 범죄자들이 사용하는 암호를 해독해 증거 확보
  3. 역사연구 : 과거의 암호문을 해독해 역사적 사건 규명

암호 해독의 어려움

  1. 암호 알고리즘의 복잡성
  2. 키의 길이
  3. 시간 제약

해독 기법

  1. brute-force 공격 : 가능한 모든 조합을 시도
  2. dictionary 공격 : 사전 파일을 사용해 비밀번호 추측
  3. rainbow 공격 : 해시 값과 일치하는 비밀번호를 미리 계산한 테이블 사용

도구

hashcat

  • 사용 이유
    • 오픈소스 기반, 강력한 암호 해독 도구
    • 다양한 해시 함수 지원
    • 빠른 속도 제공
  • 특징

    • 다양한 해시 함수 지원 : MD5, SHA-1, SHA-256, SHA-512 등
    • GPU 가속 : GPU 사용으로 암호 해독 속도 증가
    • 다양한 공격 모드 : brute-force, dictionary, rainbow 공격 등 지원
    • 사용자 친화적 인터페이스
  • 활용

    • 암호 복구 : 분실된 암호 복구
    • 시스템 보안 : 시스템의 취약점 분석 및 보안 강화
    • 암호 해독 연구 : 새로운 암호 해독 기법 연구
  • 구조

    1
    
    hashcat [옵션] 해시파일 wordlist / mask
    
    1. 해시파일 : 암호화된 해시 값 파일
    2. wordlist : 암호로 사용될 가능성이 있는 단어 목록
    3. mask : 공격 모드
  • 옵션
    • -m : 해시 모드 지정
    • -a : 공격 모드 지정
    • -o : 해독된 암호를 저장할 파일 이름
    • --force : 경고 메시지 없이 실행
    • --help : 도움말 표시

Crunch

  • Crunch는 암호 해독을 위한 워드리스트 생성 도구로, 특정 패턴이나 문자 조합을 사용해 암호로 사용될 수 있는 모든 가능성을 포함한 리스트를 생성할 수 있음
  • 사용 예시 : 패스워드 크래킹 공격에서 사용될 수 있는 단어 조합을 생성하여 다른 해독 도구와 함께 사용

  • 주요 옵션
    • -mN : 최소 길이 설정
    • -MN : 최대 길이 설정
    • -t : 패턴 지정
    • -o : 출력 파일 지정
1
crunch 8 8 abcdef123 -o wordlist.txt
  • 위 명령어는 문자 a, b, c, d, e, f, 1, 2, 3를 이용해 길이 8인 모든 조합을 생성하여 wordlist.txt에 저장

RainbowCrack

  • RainbowCrack은 Rainbow Table을 활용해 암호 해독을 수행하는 도구로, 미리 생성된 해시 값 테이블을 통해 암호 해독을 가속화
  • 솔트 값: 솔트(Salt) 값이 없는 해시값에 적합하며, 솔트가 적용된 해시값의 경우 테이블을 미리 생성할 수 없어 해독이 어려움
  • 사용 예시: 해시 기반 암호 저장 구조에서 솔트가 없는 해시값을 빠르게 해독할 때 사용
  • 주의 사항:

    • Rainbow Table을 생성하는 데 매우 많은 저장 공간과 시간이 소요될 수 있음
    • 최신 암호 해독에는 GPU 기반 실시간 해독이 더 효과적일 수 있음
- 레인보우 테이블
  • 구조

    • chain과 R함수 (Reduction 함수)

      • chain : 평문과 해시 값을 쌍으로 연결시킨 하나의 과정
      • R함수 : 해시 값을 다시 원본 데이터 공간으로 매핑하는 함수 (체인 생성에 이용되는 함수)
  • 종류

    1. NTLM
    2. MD5
    3. SHA1 (SHA2, SHA256…)
  • 공격 기법

    1. Brute-force
    2. Dictionary
    3. Rainbow Table
  • 방어 기법

    • 해시 알고리즘에 추가한 솔트 값이 외부에 유출되지 않도록 주의
    • 해시 알고리즘을 최대한 긴 알고리즘 이용 (SHA512 이상)
    • 솔트값을 제 3자가 알 수 없도록 특별한 방식의 알고리즘을 이용
      • ex) 시간테이블 적용