시스템 해킹 #1 - 취약점의 대표적인 종류

Dreamer_01·2021년 6월 22일
0

시스템 해킹

목록 보기
1/3

Dreamhack에서 시스템 해킹 공부 1일차

취약점은 공격 방법에 따라 두가지로 나눌 수 있다.

  • 메모리 커럽션 취약점: c언어 같이 저수준 언어에서 메모리를 조작해 공격하는 방법
  • 로지컬 취약점: 메모리를 조작할 필요 없이 공격하는 취약점

메모리 커럽션 취약점 종류 (일단 강의에 나와있는 것만)

(일단 이름만 정리해 보기로...)

  • Buffer Overflow(BOF): 가장 대표적인 취약점으로, 이는 프로그래머가 프로그래밍시에 할당한 크기의 버퍼보다 더 큰 데이터를 입력받아 메모리의 다른 영역을 건드리게 되어 의도한 행위를 벗어나서 오류를 일으키게 되는 공격 방법이다.

  • Out-Of-Boundary: 이 취약점은 버퍼의 길이 범위를 벗어나는 곳의 데이터에 접근할 수 있는 취약점이다.

  • Off-by-one: 경계검사에서 하나 많은 값을 쓸 수 있을때 발생하는 취약점이다. 인덱스를 잘못 계산하거나, 반복문을 순회할 때, 잘못된 비교 연산자를 사용하는 경우 발생한다.

  • Format Stirng Bug:C언어에서 사용하는 printf나 sprintf에서 모맷 스트링 문자열을 올바르게 사용하지 못한 경우를 말한다. (이 공격은 컴파일러에서 여러가지 방법으로 이를 방어하고 있기 때문에, 최근에는 잘 발생하지 않고 있다)

  • Double Free / Use-After-Free: 동적 할당된 메모리를 정확히 관리하지 못하였을때 발생하는 취약점이다. 해제된 메모리를 다시 한번 사용하려 하는 경우가 Double Free 해제된 메모리에 접근해 이를 사용하려고 하는 것을 Use After Free 라고 한다.

로지컬 버그

  • Command Injection: 셸에 사용자가 어떤 입력을 했을때 정확한 검사를 실행하지 않아서 발생하는 취약점이다. 비교적 쉬운 공격방법에 비해 강력한 효과를 발휘하기에 매우 위험한 취약점으로 분류된다.

  • Race Condition: 스레드나 프로세스의 자원관리를 정확히 수행하지 못해 데이터가 오염되는 취약점이다. 이 취약점은 원인과 공격 방법에 따라 로지컬 버그나, 메모리 커럽션 둘 쪽에 모두 포함 될 수 있는 취약점이다.

  • Path Treversal: 프로그래머가 프로그래밍을 할때 가정해놓은 디렉토리를 벗어나서 시스템 상에 존재하는 다른 파일에 접근하는 것을 말하는데, 이는 주로 수스코등에서 상위 폴더로 접근하는 명령어인 "../"와 같은 명령어를 검사하지 않아서 발생한다.

0개의 댓글