(대응) 9. 소프트웨어 개발 보안 구축 (1)

소프트웨어 개발 보안의 3가지 요소

기밀

  • 사람 또는 시스템의 무단 액세스로 인한 정보 공개 및 공개를 차단하는 속성
  • 권한이 있는 사용자만 리소스에 액세스할 수 있어야 하는 특성

진실성

  • 적법한 방법을 사용하지 않고는 데이터를 변경할 수 없고 데이터가 정확하고 완전하며 고의 또는 악의적으로 변경, 손상 또는 파괴되지 않도록 하는 기능입니다.
  • 인가된 사용자만이 리소스를 변경할 수 있는 기능과 전송 중 정보 변경이 허용되지 않음

유효성

  • 승인된 사용자 또는 애플리케이션이 원하는 서비스를 계속 사용할 수 있도록 하는 기능
  • 승인된 사용자는 권한 범위 내에서 항상 리소스에 액세스할 수 있어야 합니다.


소프트웨어 개발을 위한 보안 조건

금융 자산

  • 조직의 데이터 또는 조직의 소유자가 중요하게 생각하는 것

위험

  • 조직이나 기업의 자산에 악영향을 미칠 수 있는 사건이나 행위.

취약점

  • 위협이 출현하기 위한 전제 조건으로 시스템의 정보 보안을 저하시키는 데 사용되는 취약점

위험

  • 위협이 취약점을 악용하여 조직의 자산에 손상을 입힐 가능성


DOS 공격의 종류

SYN 범람

  • TCP 프로토콜의 구조적 문제가 있는 공격
  • SYN 패킷만 전송하여 서버에서 사용 가능한 동시 사용자 수를 캡처하여 다른 사용자가 서버를 사용할 수 없도록 만드는 공격입니다.
  • 공격자는 승인을 보내지 않고 계속해서 새로운 연결을 요청하므로 서버는 리소스 할당을 해제하지 않고 리소스를 소비하는 것만으로도 고갈됩니다.

UDP 플러딩

  • 다수의 UDP 패킷을 생성하여 임의의 포트 번호로 전송하여 응답 메시지를 생성하여 지속적으로 자원을 소모시키는 공격.
  • ICMP 패킷은 조작되어 공격자에게 전달되지 않습니다.

스머프 / 스머프

  • 소스 주소를 공격 대상의 IP로 설정하여 ICMP 에코 패킷을 전체 네트워크로 직접 전송하여 네트워크를 마비시키는 공격.
  • 바운스 사이트라고 하는 제3자 웹사이트를 통한 공격

죽음의 핑(PoD)

  • ICMP 패킷(ping)을 정상 크기보다 훨씬 크게 만들어 전송하면 심각한 IP 조각화가 발생하고 조각난 패킷을 수신측에서 처리(재결합)하는 데 큰 부하가 걸리거나 재결합 버퍼 오버플로우가 발생한다. , 서비스를 방해하는 정상적인 공격 기법

지상 공격

  • 소스 IP와 목적지 IP가 같은 패킷 주소를 갖게 하고 수신자가 자신에게 회신하는 방식으로 전송함으로써 시스템의 가용성을 침해하는 공격 기법.

눈물

  • 잘못된 조각 오프셋 정보로 인해 IP 패킷을 조립할 때 수신 시스템에 문제를 일으키는 DoS 공격
  • 공격자는 IP 프래그먼트 오프셋 값을 조작하여 중첩하여 전송하고, 수신 시스템은 재결합에 실패하여 시스템을 작동 불가능하게 만듭니다.

좋은

  • 패킷을 분할하여 보내면 첫 번째 패킷을 1번으로 보내고 모든 시퀀스 번호를 1번으로 조작하여 다음 패킷을 보내는 DoS 공격
  • 같은 번호로 배송되어 오류가 발생합니다

저주 받은

  • 첫 번째 패킷(패킷 크기가 100인 경우)을 1번으로 보낸 후 다음 패킷은 100번, 다음 패킷은 200번, 20번째 패킷은 2002번, 21번째 패킷은 100번, 그리고 22번째로 보낸 패킷은 2002번으로 보낸다.


DDoS 공격 구성 요소

핸들러

  • 마스터 시스템 역할을 하는 프로그램

대리인

  • 대상을 직접 공격하는 시스템

주인

  • 공격자로부터 직접 명령을 받는 시스템
  • 여러 에이전트를 관리하는 역할

공격자

  • 공격을 주도하는 해커의 컴퓨터

데몬 프로그램

  • 에이전트 시스템 역할을 하는 프로그램


DDoS 공격 도구

트리누

  • 여러 소스에서 통합된 UDP 서비스 거부 공격을 트리거하는 도구
  • Trinoo 공격은 소수의 서버(또는 마스터)와 다수의 클라이언트(데몬)로 구성됩니다.

부족 홍수 네트워크

  • TFN은 여러 소스에서 하나 이상의 대상 시스템에 대해 서비스 거부 공격을 수행할 수 있는 Trinoo와 거의 유사한 분산 도구입니다.
  • TFN 서비스 거부 공격은 공격자가 클라이언트(또는 마스터) 프로그램을 통해 일련의 TFN 서버(또는 데몬)에 공격 명령을 보낼 때 발생합니다.
  • TCP SYN 플러드 공격, ICMP 에코 요청 공격, ICMP 브로드캐스트 공격(스머프 공격) 및 UDP 플러드 공격 수행 가능

가시 철사

  • 분산 서비스 거부 에이전트 역할을 하는 Linux 및 Solaris 시스템용 맬웨어 도구입니다.
  • ICMP Flood, SYN Flood, UDP Flood, Smurf 등의 공격을 통한 DDoS 공격 가능


애플리케이션 공격

HTTP GET 범람

  • 캐시 제어 공격
  • 과도한 Get 메시지로 웹 서버를 과부하시키는 공격.
  • HTTP 캐시 옵션을 조작하여 웹 서버 리소스를 고갈시켜 캐싱 서버가 아닌 웹 서버에서 직접 처리하게 하는 서비스 거부 공격

Slowloris(느린 HTTP 헤더 DoS)

  • HTTP GET 방식을 사용할 때 헤더의 마지막 끝을 나타내는 줄 바꿈 문자열인 \r\n\r\n 대신 \r\n만 전송되어 대상 웹 서버와의 연결을 오랫동안 활성 상태로 유지합니다. 모든 연결 자원의 의지 및 고갈 서비스 거부 공격

RUDY 공격(느린 HTTP POST DoS)

  • 가짜 요청 헤더의 Content-Length를 비정상적으로 크게 설정하고 연결을 유지하기 위해 아주 적은 양의 메시지 본문을 보내는 공격.

느린 읽기 공격

  • TCP 창 크기를 낮게 설정하여 서버로 전송하고, 창 크기를 기준으로 통신하면서 데이터 전송이 완료될 때까지 연결을 유지하여 서버의 연결 자원을 고갈시키는 공격.

헐크 DoS

  • 공격자가 대상 웹 사이트의 웹 페이지 주소(URL)를 지속적으로 변경하여 많은 수의 GET 요청을 생성하는 서비스 거부 공격입니다.
  • 주소(URL)가 지속적으로 변경되는 이유는 임계값 기반의 DDoS 대응책을 우회하기 위한 방법입니다.


네트워크 공격

맡다

  • 대상을 직접 공격하지 않고 은밀하게 데이터를 바라보는 소극적 공격 기법

네트워크 스캐너, 스니퍼

  • 공격자가 네트워크 하드웨어 및 소프트웨어 구성의 취약성을 조사하여 취약성을 식별할 수 있는 공격 도구입니다.

비밀번호 크래킹

  • 사전 크래킹: ID 및 비밀번호가 될 수 있는 단어를 파일에 저장한 후 해당 파일의 단어를 대체하여 크래킹하여 시스템 또는 서비스 ID 및 비밀번호를 크랙하는 공격 기법입니다.
  • 무차별 대입 크래킹(Brute force cracking): 비밀번호로 사용할 수 있는 영문자(대소문자), 숫자, 특수문자를 임의로 바꾸어 비밀번호를 찾아내는 공격 기법.
  • 암호 하이브리드 공격: 사전 공격과 무차별 대입 공격을 결합한 공격 기법
  • 레인보우 테이블 공격 : 각 비밀번호에 대한 해쉬값을 미리 생성해 테이블로 컴파일한 후 테이블에서 크랙할 해시값을 조회하고 그 반대로 비밀번호를 찾아내는 공격 기법.

IP 스푸핑

  • 침입자가 인증된 호스트의 IP 주소를 스푸핑하여 대상 시스템으로 전송하여 침입자를 속여 대상 시스템을 인증된 컴퓨터 시스템으로 속여 정보를 훔치는 공격 기법입니다.

ARP 스푸핑

  • 공격자는 자신의 MAC 주소로 특정 호스트의 MAC 주소를 스푸핑하는 ARP 회신을 생성하여 피해자에게 지속적으로 전송하면서 피해자의 ARP 캐시 테이블에 특정 호스트의 MAC 정보를 삽입하여 공격자의 MAC 정보가 변경되도록 합니다. 그리고 피해자에서 특정 호스트로 공격자가 패킷을 도청하는 공격 기법

ICMP 리디렉션 공격

  • 스니핑 엔진을 레이어 3 네트워크의 또 다른 라우터로 광고하여 패킷 흐름을 변경하는 공격 기술입니다.
  • 공격자가 원하는 형태로 ICMP 리디렉션 메시지를 만들어 특정 대상으로 향하는 패킷을 도청하는 공격 기술입니다.

트로이 목마

  • 겉으로는 정상 프로그램처럼 보이지만 실행하면 악성코드를 실행시키는 악성루틴을 숨기는 프로그램.


버퍼 오버플로 공격 유형

스택 버퍼 오버플로 공격

  • 메모리 영역 간 함수의 로컬 값 또는 리턴 주소를 저장하는 스택 영역에서 발생하는 오버플로 공격
  • 스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터(실행 코드)를 입력하여 리턴 주소를 변경하고 공격자가 원하는 임의의 코드를 실행시키는 공격 기법.

힙 버퍼 오버플로 공격

  • 프로그램 실행 시 동적으로 할당된 힙 공간에 할당된 버퍼 크기를 초과하는 데이터(실행 코드)를 입력하고, 메모리 데이터 및 함수 주소를 수정하여 공격자가 원하는 코드를 실행시키는 공격 기법.
  • 인접한 메모리의 데이터는 삭제될 수 있으며 해당 위치에 특정 기능에 대한 포인터 주소가 존재하는 경우 이를 악용하여 관리자의 권한 있는 파일에 액세스하거나 공격자의 특정 코드를 실행할 수 있습니다.


버퍼 오버플로 공격에 대한 대책

스택가드

  • 반환 주소와 변수 사이에 카나리아(canary)라는 무결성 검사 값을 삽입하고, 버퍼 오버플로가 발생하면 카나리아 값을 검사하고 변경되면 반환 주소를 호출하지 않습니다.

스택 기호

  • 함수가 시작되면 반환 주소는 Global RET라는 특수 스택에 저장되고 함수가 종료되면 저장된 값과 스택의 RET 값을 비교합니다.

ASLR(주소 공간 레이아웃 무작위화)

  • 메모리 공격으로부터 보호하기 위해 주소 공간 레이아웃을 무작위화하고 각 실행에서 메모리 주소를 변경하여 버퍼 오버플로를 통해 특정 주소에 대한 호출을 차단합니다.
  • Linux에서 구성 가능

보안 기능 사용

  • 버퍼 오버플로에 취약한 함수: strcat(), strcpy(), gets(), scanf(), sscanf(), vscanf(), vsscanf(), sprintf(), vsprintf()
  • 버퍼 오버블로우로부터 보호되는 함수: strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf()


뒷문

  • 백도어는 제품, 컴퓨터 시스템, 암호화 시스템 또는 알고리즘에서 정상적인 인증 프로세스를 우회하는 기술입니다.
  • 백도어(backdoor)라는 우리말에서 알 수 있듯이 대부분 은밀하게 작동하며 허가 없이 시스템에 접근할 수 있는 권한을 얻는다.
  • 해커는 백도어를 통해 몰래 컴퓨터에 접근해 악의적인 행동을 한다.


시스템 보안을 위한 중요한 공격 기법

형식 문자열 공격

  • 포맷스트링을 인수로 하는 함수의 취약점을 악용하는 공격, 입력값을 외부에서 검증하지 않고 입출력 함수의 포맷스트링을 그대로 사용할 때 발생하는 취약점 공격 기법

경쟁 조건 공격

  • 경쟁 조건은 둘 이상의 프로세스 또는 스레드가 동시에 공유 리소스에 액세스할 때 액세스 순서에 따라 비정상적인 결과가 발생하는 조건/상황입니다.

키로거 공격

  • 컴퓨터 사용자의 키보드 움직임을 감지하여 기록하고 아이디, 비밀번호, 계좌번호, 카드번호 등의 중요한 개인정보를 몰래 빼내는 해킹 공격.

루트킷

  • 다음과 같이 불법 해킹에 주로 사용되는 기능을 제공하는 프로그램 모음 B. 향후 침입을 위한 백도어, 트로이 목마 설치, 원격 접속, 내부 사용 흔적 삭제 및 시스템 침입 후 침입을 숨기면서 관리자 권한 획득.