반응형
- 과도한 트래픽 발생을 유도함으로써 정상적인 운영이나 서비스가 될 수 없게 하는 공격기법(가용성 파괴)
■ 버퍼 오버플로우 공격(Buffer Overflow) 정해진 메모리의 범위를 넘치게 해서 원래 복귀 주소를 변경시켜 임의의 프로그램이나 함수를 실행시키는 해킹기법이다. ● 스택 버퍼 오버플로우 함수 처리를 위해 지역변수 및 매개변수가 위치하는 메모리 영역을 스택이라 하는데, 스택에 할당된 버퍼들이 문자열 계산 등에 의해 정의된 버퍼의 한계치를 넘는 경우 버퍼 오버플로우가 발생하여 복귀 주소를 변경하고 공격자가 원하는 임의 코드를 실행한다. ● 힙 버퍼 오버플로우 힙은 사용자가 동적으로 할당하는 메모리 영역이다. 힙에 할당된 버퍼들에 문자열 등이 저장되어 질 때, 최초 정의된 힙의 메모리 사이즈를 초과하여 문자열 등이 저장되는 경우 버퍼 오버플로우가 발생하여 데이터와 함수 주소 등을 변경하여 공격자가 원하는 임의 코드를 실행한다. ○ 버퍼 오버플로우에 취약한 함수들 strcat(), strcpy(), gets(), scanf(), sscanf(), vscanf(), vsscanf(), sprintf(), vsprintf() ○ 권장되는 함수들 strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf() ◎ 버퍼 오버플로우 예방책 (1) 스택가드 (canary 기법) 메모리 상에서 프로그램의 복귀 주소와 변수 사이에 특정값을 저장해 두었다가 그 값이 변경되었을 경우 프로그램 실행을 중단. (2) 스택쉴드 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장해 두었다가 함수 종료 시 저장된 값과 스택의 RET 값을 비교해 다를 경우 프로그램 종료 (3) ASLR (Address Space Layout Randomization) 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하는 기법. 실행시마다 메모리 주소를 변경시켜 악성코드에 의한 특정 주소 호출을 방지 #echo 0 > /proc/sys/kernel/randomize_va_space (중지 명령어) #echo 2 > /proc/sys/kernel/randomize_va_space (사용 명령어) (4) 프로그래밍 개발자 오류를 줄일 수 있도록 교육하는 것이 가장 중요(취약 함수 사용 금지) |
● Ping Of Death 대량의 ping을 전송해서 네트워크를 마비시킨다. ping을 보낼 때 패킷을 최대한 길게 해서(최대65535byte) 공격 대상에게 보내면, 사이즈가 너무 크기 때문에 패킷은 수백 개의 패킷으로 나누어서 보내게 됩니다. 공격 대상은 해당 쪼개진 패킷을 조합하는 과정에서 버퍼 오버플로우 및 시스템 충돌이 발생한다. ○ 예방책 (1) ICMP(ping)을 차단 : 서버 자체 방화벽에서 차단 가능 # sysctl –w net.ipv4.icmp_echo_ignore_all=1 (허용은 0) # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all (허용은 0) (2) ICMP를 사용해야하는 경우 ping의 길이를 제한 (3) 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시한다. |
● Land Attack SYN 패킷을 전송할 때 출발지 주소와 목적지 주소를 모두 공격대상으로 설정하여 보낸다. 그러면 패킷을 받은 서버는 응답을 보내줄 때 목적지 주소가 자기 자신이므로, SYN 패킷이 계속 내부에서 돌게 되어, 서버 자원고갈로 인해 서비스 장애를 유발한다. ○ 예방책 - 방화벽에서 출발지와 목적지가 같은 패킷은 무조건 Drop 시킨다. - 대부분의 OS는 기본 설정으로 적용되어 있다. |
● SYN Flooding TCP 통신의 신뢰성있는 3Way Handshaking을 악용한 공격방법으로, 공격자는 존재하지 않는 출발지 주소를 위조한 SYN 패킷을 공격대상 서버에게 전달하고 공격대상 서버는 SYN 패킷을 받은 후 백로그 큐의 자원을 할당해주며, 이에 대한 SYN/ACK 응답을 한 후 ACK 패킷이 들어올 때까지 기다린다. 하지만 위조된 SYN 패킷이므로 ACK 응답은 돌아오지 않는다. 이런식으로 백로그 큐를 가득 채워 다른 사용자가 서버의 정상 서비스를 제공받지 못하게 한다. ○ 예방책 백로그 큐의 공간을 늘려준다. # sysctl -w net.ipv4.tcp_max_syn_backlog=1024 syn-cookies 기능을 활용한다.(백로그가 가득차 있어도 정상적인 접속요구를 계속 받아들일 수 있도록) # sysclt -w net.ipv4.tcp_syncookies=1 Syn_RCVD 대기 시간을 줄인다. 적절한 레지스트리값을 편집한다. |
● Smurf 공격자가 ICMP를 조작하여 한번에 많은 양의 ICMP Reply를 공격대상에게 보내는 공격. 공격자가 출발지 주소를 공격할 서버의 IP로 설정하고 네트워크상의 모든 호스트에게 브로드캐스트로 ICMP를 보낸다. 수많은 호스트들이 서버에게 ICMP Reply를 보내게 되고 공격대상 서버는 이를 처리하느라 시스템 과부하 상태가 된다. ○ 예방책 스위치에 Direct Broadcast 패킷에 대한 차단 설정 ICMP Reply 패킷이 다량으로 발생한다면 해당 패킷들을 침입차단시스템을 통해 모두 차단신다. 브로드캐스트 주소로 전송된 ICMP Echo Request 메시지에 대해 응답하지 않도록 시스템 설정을 한다. |
♣ 간단한 한줄 퀴즈 ♣
Q. 다음 중 버퍼 오버플로우에 취약한 함수가 아닌것은?
①strcat() ②gets() ③fgets() ④scanf() ⑤sprintf()
A. 정답
③
(↑ 이곳을 드래그해주세요)
반응형
'자격증 > 정보보안기사' 카테고리의 다른 글
FTP (1) | 2024.02.15 |
---|---|
대칭키 암호 vs 공개키 암호 (0) | 2024.02.14 |
IPSec (0) | 2024.02.13 |
TLS/SSL Handshake (SSL인증서) (2) | 2024.02.07 |
DRDoS (0) | 2023.07.26 |