본문 바로가기
Certificate/정보처리기사

정보처리기사 실기_01 _소프트웨어 개발 보안 설계

by 꽈리바게트 2021. 6. 29.

SW 개발 보안의 3대 요소 <<기무가>>

  • 기밀성: 인가되지 않은 사용자는 정보 공개 및 노출을 차단하는 특성
  • 무결성: 정당한 방법을 따르지 않으면 데이터가 변경될 수 없는 특성
  • 가용성: 권한을 가진 사용자는 원하는 서비스를 지속해서 이용할 수 있게 보장하는 특성

SW 개발 보안 용어 <<자위취위>>

  • 자산: 조직의 데이터 또는 소유자가 가치를 부여한 대상
  • 위협: 자산에 악영향을 끼칠 수 있는 사건이나 행위
  • 취약점: 위협이 발생하기 위한 사전 조건, 시스템의 정보 보증을 낮추는데 사용되는 약점
  • 위협: 취약점을 이용하여 조직의 자산 손실 패해를 가져올 가능성

SW개발 보안을 위한 공격기법 이해

 

1. DoS(Denial of Service) 
시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격

 

DoS 종류 나 자신 제발 좀 외워!!!!!!!!

  1. SYN 플러딩: TCP 프로토콜의 구조적인 문제 공격, 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격
  2. UDP 플러딩: 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메세지 생성하게 하여 지속해서 자원 고갈 시키는 공격
  3. 스머프/스머핑: 출발지 주소를 공격대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격
  4. 죽음의 핑(ping of death): ICMP 패킷을 정상크기보다 크게 만들어 전송하여 IP 단편화가 발생하여 수신지에 재조합과정에서 부하가 발생하여 마비시키는 공격
  5. 랜드 어택: 출발지 IP와 도착지 IP를 같은 패킷으로 만들어 보내 수신자가 자기 자신에게 응답을 보내게 하여 시스템 가용성 침해하는 공격
  6. 티어드롭: IP패킷 재조합에서 잘못된 Fragment offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 공격
  7. 봉크/보잉크: 오류제어 이용한 공격기법으로 시스템의 패킷 재전송과 재조립이 과부하 유발 
    - 봉크: 같은 시퀀스 번호 계속 전송 
    - 봉잉크: 일정한 간격으로 시퀀스 번호에 빈 공간 생성

2. DDoS(Distributed DoS)
여러 대의 공격자를 분산배치하여 동시에 동작하게 해 특정 사이트 공격

 

DDoS 공격 구성요소

공격자(Attacker)
공격을 주도하는 해커의 컴퓨터
마스터
공격자에게서 직접 명령 받는 시스템
핸들러
마스터 시스템의 역할을 수행는 프로그램
에이전트
공격 대상에 직접 공격가하는 시스템
데몬 프로그램
에이전트 시스템의 역할을 수행하는 프로그램

 

DDoS 공격 도구

  • Trinoo
    많은 소수로부터 통합된 UDP flood 서비스 거부 공격을 유발하는데 사용되는 도구
  • TFN(Tribe Flood Network)
    분산 공격 도구로 많은 소스에서 하나 혹은 여러개의 목표 시스템에 대해 서비스 거부 공격을 수행
    ex) UDP flood, TCP SYN flood, ICMP echo요청 공격, ICMP 브로드캐스트 공격 
  • Stacheldraht 얘는 나오면 걍 틀려야하지 않을까 단어 자체도 어려운걸..

DoS vs DDoS
DoS는 1대의 공격자 컴퓨터에서 타깃 시스템에 악성 패킷을 보내는 방식
DDoS는 공격자가 여러대의 컴퓨터 감염시켜 좀비pc로 타킷시스템을 집중적으로 공격해서 마비

 

3. DRDoS(Distributed Reflection DoS)

출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보 전송(SYN)

공격 대상자는 반사 서버로 부터 다량의 응답(SYN-ACK)을 받아 서비스 거부  

 

4. 애플리케이션 공격 기법= DDoS 서비스 마비 공격

  • HTTP GET 플러딩
    과도한 get 메세지를 이용하여 웹 서버의 과부하를 유발시키는 공격
  • Slowloris(Slow HTTP Header DoS)
    HTTP GET 메서드 사용하여 헤더 끝을 알리는 \r\n\r\n이 아니라 \r\n을 전송하여 연결상태 지속하여 자원 소진
  • RUDY(Slow HTTP POST DoS)
    요청 헤더의 Content-Length를 비정상적으로 크게 설정하고, body부분을 매우 소량으로 계속 보내 연결 유지
  • Slow HTTP Read DoS
    TCP 윈도 크기와 데이터 처리율 감소시킨 상태에서
    HTTP 패킷 지속적으로 전송하여 대상 서버 연결상태 지속하여 자원 소진 
  • Hulk DoS
    공격자가 공격대상 웹 사이트 페이지 주소를 지속적으로 변경시켜 다량으로 GET요청 발생시키는 공격
  • HASH DoS
    클라이언트 HTTP 요청을 통해 전달되는 파라미터를 효율적으로 저장, 검색하기 위한 자료 구조로 해시테이블 사용

5. 네트워크 공격

  • 스니핑: 공격대상에게 직접 공격하지 않고 데이터만 몰래 들여다보는 공격
  • 네트워크 스캐너, 스니퍼: 네트워크 하드웨어 및 소프트웨어 구성의 취약점을 파악하기위해 취약점을 탐색하는 도구
  • 패스워트 크래킹
    1. 사전 크래킹
    2. 무차별 크래킹
    3. 패스워드 하이브리드 공격
    4. 레인보우 테이블 공격
  • IP스푸핑
    인증된 컴퓨팅 시스템인 것처럼 속여서 정보를 빼내기 위해 패킷 헤더를 인정된 호스트의 IP어드레스로 위조하여 타깃에 전송
  • ARP 스푸핑
    특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC정보를 공격자의 MAC정보로 변경
  • ICMP Redirect 공격
  • 트로이 목마
    겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성코드를 실행하는 프로그램

6. 시스템 보안 위협

1 버퍼 오버플로우 공격

메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 프로세스의 흐름을 변경시켜서 악성 코드를 실행

 

버퍼  오버플로우 공격 유형

  • 스택 버퍼 오버플로우 공격
    - 메모리 영역 중 local value나 함수의 return address가 저장되는 스택 영역에서 발생
    - 스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 복귀주소를 변경하고 임의의 코드를 실행시킴
  • 힙 버퍼 오버플로우 공격
    -
    동적으로 할당되는 힙 영역에 할당 버퍼 크기를 초과하는 데이터 입력하여 메모리의 데이터와 함수주소 등을 변경
    - 인접 메모리의 데이터가 삭제될 수 있으며, 해당 특정 함수에 대한 포인터 주소가 있으면 이를 악용하여 접근 시도

버퍼 오버플로우 대응 방안

  • 스택가드: ‘카나리’라고 불리는 무결성 체크용 값을 복귀주소와 변수사이에 삽입해두고, 버퍼 오버플로우 발생 시 카나리 값을 체크, 변할 경우 복귀 주소를 호출하지 않는 방식으로 대응
  • 스택쉴드: 함수 시작 시 복귀주소를 global RET라는 특수 스택에 저장해두고, 저장된 값과 스택의 값 비교해서 다르면 오버플로우로 간주하고 프로그램 실행을 중단
  • ASLR(address space layout randomization): 주소공간 배치 난수화, 실행 시 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정주소 호출 차단(리눅스에서 사용가능)
  • 안전한 함수 활용
  • 실행 제한: 스택에서 쓰기 제한, 실행 금지, 가능성있는 suid프로그램 제한

2 백도어

암호 시스템 혹은 알고리즘에서 정상적인 인증절차 우회

 

백도어 탐지 기법

  • 프로세스 및 열린 포트 확인: TCPView로 열린 포트 확인 후 백도어 탐지
    리눅스(ps ef 동작 중인 프로세스 확인 + netstat an 열린 포트 확인) 으로 백도어 탐지
  • Setuid 파일검사: 새로 생성된 setuid파일이나 변경된 파일 확인을 통해 백도어 탐지
  • 백신 및 백도어 탐지 툴 활용
  • 무결성 검사: 리눅스(tripwire) ‘no such file of directory’ - 정상 파일
  • 로그분석: wtmp, secure, lastlog, pacct, history, messages

3 주요 시스템 보안 공격기법

  • 포맷 스트링 공격
    인자로 하는 함수의 취약점을 이용한 공격으로 외부로부터 입력된 값을 검증하지않고 그대로 사용할 경우 발생
  • 레이스 컨디션 공격
    - 둘 이상의 프로세스나 스레드가 공유 자원을 동시에 접근할 때 접근 순서에 따라 비정상적인 결과 발생
    - 임시파일 만드는 경우 악의적인 프로그램을 통해 프로세스 실행 중에 끼어들어 임시파일을 심볼릭 링크하여 공격
  • 키로거공격
    사용자의 키보드 움직임 탐지해서 저장하고, 중요 정보를 몰래 빼내는 공격(=키로깅, 키스트로크 로깅)
  • 루트킷
    시스템 침입 후 차후의 침입을 위해 백도어, 트로이 목마, 원격접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 불법적인 해킹에 사용되는 기능을 제공하는 프로그램 모음

 

7. 보안 관련 용어

  • 스피어피싱
    사회공학 기법, 일반적인 이메일로 위장한 메일 지속적으로 발송하여 링크나 파일 접속 유도
  • 스미싱
    SMS + 피싱
    문자메시지 이용하여 신뢰할 수 있는 사람 또는 기업이 보낸 것처럼 가장
  • 큐싱
    QR + 피싱
    악성 앱 내려받도록 유도
  • 봇넷
    악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 컴퓨터들이 네트워크로 연결되어 있는 형태
  • APT 공격
    특정 타깃을 목표로 다양한 수단을 지속적이고 지능적이게 맞춤형 공격
  • 공급망 공격
    소스코드의 수정을 통해 악의적인 코드 삽입하거나 악의적인 파일로 변경하여 소프트웨어 설치 또는 업데이트 시에 자동적으로 감염 
  • 제로데이 공격
    보안 취약점이 발견되어 공표되기 전에 해당 취약점을 악용하여 이루어지는 보안 공격기법 

  • 스스로 복제하여 네트트워크 등의 연결을 통해 전파하는 악성 소프트웨어 컴퓨터 프로그램 
    바이러스와 비슷하지만 독자적으로 실행, 다른 실행 프로그램 불필요 
  • 악성  봇
  • 사이버 킬체인
  • 랜섬웨어
    감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록 하고, 피해자에게 암호화된 파일의 몸값을 요구
  • 이블트윈
  • 난독화
    코드의 가독성을 낮춰 역공학에 대한 대비하여 코드의 일부를 변경하는 기법
  • Tripwire
  • Ping
  • Tcpdump