정보처리기사 실기 - 소프트웨어 보안 구축

둡둡·2023년 4월 13일

정보처리기사

목록 보기
9/12

Secure SDLC

  • 안전한 소프트웨어를 개발하기 위한 보안 강화 프로세스
    • cf. 소프트웨어 개발 생명 주기(SDLC, Software Development Life Cycle)
  • 대표적인 방법론
    • CLASP : 개발 초기 단계에서 보안을 강화하는 방법론
    • SDL : 마이크로소프트 사에서 기존의 SDLC를 개선한 방법론
    • Seven Touchpoints: 소프트웨어 보안의 모범사례를 통합한 방법론
  • 소프트웨어 개발 보안 요소
    • 기밀성(Confidentility) : 인가된 사용자만 접근 허용
    • 무결성(Integrity) : 인가된 사용자만 수정 허용
    • 가용성(Availability) : 인가받은 사용자는 언제든지 사용 가능
    • 인증(Authorization) : 합법적인 사용자인지 확인하는 행위
    • 부인 방지(NonRepudiation) : 송수신한 사실에 대한 증거 제공
    • cf. 보안의 3대 요소: 기밀성, 무결성, 가용성
  • 시큐어 코딩(Secure Coding)
    • 구현 단계에서 보안 요소들을 고려하여 코드 작성
    • 사전 대응으로 안정성과 신뢰성 확보

보안 관리 종류

  • 세션 통제
    • 세션 연결과 연결로 인해 발생하는 정보 관리
    • 종류
      • 불충분한 세션 관리 : 일정 규칙이 있는 세션 ID 발급, 긴 타임아웃 등
      • 잘못된 세션에 의한 정보 노출: 다중 스레드(Multi-Thread) 환경
  • 입출력 데이터
    • 입력 데이터로 인해 발생하는 문제 예방과 보안 점검
    • 종류
      • SQL Injection(삽입): 웹 애플리케이션에 악의적인 SQL을 삽입하여 내부 데이터를 유출 및 변조함
      • 크로스사이트 스크립팅(XSS): 원치 않는 사이트로 접속을 유도하여 부적절한 스크립트를 실행시켜 정보를 탈취하거나 비정상적인 기능 수행을 유발함
      • 사이트 간 요청위조(CSRF): 공격자가 의도한 행위를 웹사이트에 요청하게 하는 공격
      • 버퍼 오퍼플로우: 할당된 메모리 범위를 넘는 위치에서 데이터 입출력할 때 발생하는 보안 약점
      • 버퍼 오퍼플로우 대응 방안
        • 스택 가드(Stack Guard): 카나리 무결성 체크용 복귀 주소 체크
          • 복귀 주소와 변수 사이에 특정한 값을 저장하고 그 값이 변경되는 경우 실행 중단
        • 스택 쉴드(Stack Shield): Global RET 특수 스택 비교
        • ASLR(Address Space Layout Randomization): 주소 공간 배치 난수화
  • 코드 오류
    • 널 포인터(Null Pointer) 역참조
      • 널 포인터가 가리키는 메모리 위치에 값을 저장할 때 발생하는 보안 약점
  • API 오용
    • DNS Lookup
      • 도메인명에 의존하여 인증이나 접근통제 등의 보안 결정을 내리는 경우 발생하는 약점

암호 알고리즘

  • 중요한 개인 정보 등을 보호하기 위해 평문을 암호화된 문장으로 만드는 방법
  • 암호 방식 분류
    • 양방향: 개인키(Stream, Block), 공개키
    • 단방향: Hash
  • 개인키 암호화 기법(Private Key Encryption)
    • 동일한 암호화 키와 복호화 키 사용하는 기법
    • 대칭 암호 기법, 단일키 암호화 기법
    • 속도가 빠르지만 관리하는 키의 수가 많음
    • 종류
      • 스트림 암호화 기법: 하나의 비트 단위 암호화
        • RC4
          • 랜덤 치환에 기초한 알고리즘, 8~16번 연산 필요
        • RC5
          • 블록 크기 32/64/128비트
          • 라운드 0에서 255 가변적
        • LFSR
          • 선형 되먹임 시프트 레지스터의 일종
      • 블록 암호화 기법: 여러 개의 비트 단위(블록) 암호화
        • SEED
          • 1999년 한국인터넷진흥원 개발한 국내 표준
          • 키 길이 128/256 2개 제공
          • 16회 라운드를 거쳐 평문 2개 블록
        • ARIA
          • 2004년 국가정보원과 산학연합회 개발한 국내 표준
          • 경량 환경 및 하드웨어 효율성 향상
        • DES
          • 64비트 블록 암호화
          • 16 라운드
          • DES 3번 적용(Triple DES)
        • AES
          • Rijdael(라인달)
          • 미국 표준 기술 연구소(NIST), DES 보완한 미국 표준
          • 128/192/256 키 길이 3개 제공
          • 10/12/14 라운드 수 고정, 한 라운드는 4가지 계층 구성
        • IDEA
          • 스위스 연방 기술 기관에서 개발하고 PGP 채택
          • 128비트 키를 사용하여 8라운드에 거쳐 64비트 암호문으로 만듦
        • Skipjack
  • 공개키 암호화 기법(Public Key Encryption)
    • 암호화 키는 공개키(Public Key), 복호화 키는 비밀키(Secret Key)
    • 비대칭 암호화 기법
    • 관리하는 키의 수가 적지만, 속도가 느림
    • 종류
      • 소인수 분해: RSA, Rabin
      • 이산대수 문제: EIGamal, DSA, Diffie-Hellman, ECC
      • RSA
        • 1978년 MIT 라이베스트/샤미르/애들먼 제안, 소인수분해 문제
      • EIGamal
        • 이산대수 문제의 어려움으로부터 안정성을 얻는 알고리즘
      • ECC
        • 타원 곡선 알고리즘
        • 이산대수 문제 기반, RSA/EIGamal보다 사이즈 작고 효율적(모바일 환경)
  • 해시(Hash)
    • 임의 길이의 데이터나 메시지를 고정된 길이로 변환하는 것
    • 일방향, 해시 함수
    • 종류
      • SHA 시리즈: 1993년 미국 국가안보국(NSA) 설계, 국립표준기술연구소(NIST) 발표, SHA-0/1/2/224/256/512
      • MD5: 1991년 R.Rivest 고안, MD4 대체, 블록 크기 512비트, 키 길이 128비트
      • N-NASH: 1989년 전신전화주식회사(NTT), 블록 크기와 키 길이 128비트
      • SNEFRU: 1990년 R.C.Mercle, 32비트 프로세서에서 구현

서비스 공격 유형

  • 서비스 거부(DoS, Denial of Service) 공격
    • 표적 서버의 자원을 고갈시킬 목적으로 대량의 데이터를 집중적으로 전송하여 정상적인 기능을 방해하는 공격
  • 종류
    • 스머핑(Smurfing)/스머프(Smurf)
      • 송신 주소를 공격 대상인 수신 대상지의 IP 주소로 위장하고 해당 네트워크 라우터의 브로드캐스트 주소로 패킷을 전송함
      • 해당 네트워크 내의 모든 컴퓨터로 전송하고, 이에 대한 에코 응답 메시지를 공격 대상인 수신 주소로 집중 전송하여 네트워크 과부하 발생시킴
    • 죽음의 핑(Ping of Death)
      • 패킷의 크기를 허용 범위 이상을 전송하여 네트워크를 마비시키는 공격
      • 서버는 다수의 분할된 IP 단편화(Fragment) 패킷을 수신하여 재조립하고 각각의 ICMP Ping 메시지에 대한 응답을 처리하기 위해 과부하 발생
      • ICMP Ping: 특정 IP로 패킷이 전송될 때 현재 운영 중인 IP인지 확인 요청하여 에코 응답 메시지를 전송받음
    • TearDrop
      • 아주 큰 패킷을 분할한 Fragment Offset 값을 조작하여 전송하고 수신지에서 패킷 재조립 시 오류 발생시키는 공격
    • Land Attack
      • 패킷의 송신과 수신 IP 주소를 동일한 공격 대상의 IP 주소로 전송하여, 스스로에게 무한히 응답하게 하는 공격
    • SYN Flooding
      • 초기 연결 요청(SYN) 패킷을 반복적으로 전송하여, TCP의 3-Way-Handshake를 의도적으로 중단시키고 서버 대기 상태로 만드는 공격
      • 3-Way-Handshake: 신뢰성 있는 연결을 위해 송신지와 수신지 사이에 'SYN'-'SYN+ACK'-'ACK' 패킷 확인 작업을 거침
    • UDP Flooding
      • 대량의 UDP패킷을 만들고 응답 메시지를 생성하게 하여 자원을 고갈시키는 공격
    • ARP 스푸핑
      • 자신의 MAC주소로 위조한 ARP REPLY를 지속 전송, 데이터 패킷을 중간에서 가로채는 공격 기법, 근거리만 가능
    • DoS
      • HTTP GET Flooding: 과도한 Get 메시지로 웹 서버 과부하 유발, HTTP 캐시 옵션을 조작하여 웹 서버 자원을 소진시킴
      • Slowloris(Slow HTTP Header DoS): HTTP GET 메서드를 이용하여 \r\n(Hex: 0d 0a)만 전송
      • RUDY(Slow HTTP POST Dos): Content-Length를 비정상적으로 크게 설정, 메시지 바디를 매우 소량으로 계속 연결상태 유지
      • Slow HTTP Read DoS: TCP 윈도 크기와 데이터 처리율을 감소시킨 상태에서(Zero Window Packet) 다수 HTTP 패킷을 지속적으로 전송하여 웹 서버의 연결 자원을 소진시키는 공격
      • Hulk DoS: 공격대상 웹페이지 주소(URL)를 지속적으로 변경하면서 다량으로 GET요청을 발생시킴
      • Hash DoS: 다수의 해시 충돌(Collision)을 발생시켜 자원을 소모시키는 공격
    • DDoS(분산 서비스 거부, Dostributed Denial of Service)
      • 여러 공격 지점에서 한 곳의 공격 대상인 서버를 공격함
      • 분산 서비스 공격용 툴: 에이전스 역할을 하는 데몬(Daemon)
        • Trinoo: UDP Flooding 공격
        • TFN(Tribe Flood Network): TCP SYN Flood 공격, ICMP 응답 요청, 스머핑 공격 등을 수행
        • TFN2K: TFN 확장판
        • Stacheldraht: 암호화된 통신 수행
    • 세션 하이재킹(TCP 세션 하이재킹)
      • 세션 관리 취약점을 이용하여 RST 패킷을 통해 정상 연결을 종료 시킨 후 공격자에게 재연결시킴

네트워크 공격

  • 스미싱(Smishing)
    • 문자 메시지를 이용해 개인 정보를 탈취하는 수법
    • 최근에는 앱 설치 파일로 유도하는 등으로 발전함
  • 스피어 피싱(Spear Phishing)
    • 특정 대상을 선정하여 위장 이메일이나 첨부파일 등을 지속적으로 발송하여 접속을 유도하는 공격
  • APT(Advanced Persistent Threats, 지능형 지속 위협)
    • 특정 기업이나 조직 네트워크에 침투해 보안을 무력화하거나 정보를 탈취하는 공격
    • 스턱스넷(Stuxnet) 같은 악성코드가 담긴 디스크 전파, 감염된 P2P 사이트 전파 등
  • 무작위 대입 공격(Brute Force Attack)
    • 암호화된 암호키에 모든 값을 대입하여 공격하는 방식
  • 큐싱(Qshing)
    • QR 코드를 통해 악성 프로그램을 설치하도록 유도하는 기법
  • 스니핑(Sniffing)
    • 네트워크 중간에서 패킷 정보를 도청하는 등의 수동적 공격 기법
  • 레이스 컨디션 공격(Race Condition Attack)
    • 여러 스레드가 공유 자원에 동시에 접근할 때 발생하는 공격

정보 보안 침해 공격

  • 좀비(Zombie) PC
    • 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하는 컴퓨터
  • C&C 서버(Command & Control)
    • 해커가 원격지에서 좀비 PC에 명령을 내리고 악성코드를 제어하는 서버
  • 봇넷(Botnet)
    • 악성 프로그램에 감염되어 악의적으로 이용할 수 있는 컴퓨터들이 네트워크로 연결됨
  • 웜(Worm)
    • 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높이고 다운시키는 바이러스
    • 분산 서비스 공격, 버퍼 오버플로우 공격, 슬래머 등
  • 제로 데이 공격(Zero Day Attack)
    • 보안 취약점이 알려지기 전에 공격하는 기법, 공격의 신속성
  • 키로거 공격(Key Logger Attack)
    • 키보드의 움직임을 탐지해 개인 정보 등을 탈취하는 해킹 공격
  • 랜섬웨어(Ransomware)
    • 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화하여 금품을 요구하는 소프트웨어
  • 백도어(Back Door, Trap Door)
    • 시스템 설계자나 작성자의 편의를 위해 보안이 없는 비밀 통로
  • 루트킷(Rootkit)
    • 차후 침입을 위한 백도어, 트로이목마, 원격 접근 등 불법적인 해킹에 사용되는 기능을 제공하는 프로그램 모음
  • 크라임 웨어(Crimeware)
    • 온라인 범죄와 같은 불법적인 행위를 수행하기 위해 제작된 프로그램
    • 공격용 툴 킷(키로거, 스파이웨어 등이 속함)
  • 트로이 목마(Trojan Horse)
    • 정상적인 프로그램으로 위장하여 숨어 있다가 이후 활성화하여 공격하는 기법
  • SQL 슬래머(Slammer)
    • SQL 취약점을 이용하여 SQL 서버를 공격하는 웜 바이러스의 형태
  • 공급망 공격(Supply Chain Attack)
    • 소프트웨어 개발사의 네트워크에 침투하여 코드를 삽입하거나 변경하는 등의 공격기법
  • 이블 트윈(Evil Twin)
    • 무선 Wifi피싱 기법, 핫스팟에 연결한 무선 사용자들의 정보를 탈취

서버 인증

  • 보안 서버
    • 개인 정보를 암호화하여 송수신하는 서버
    • 서버에 SSL(Secure Socket Layer) 인증서를 설치함
      • SSL(Secure Sockets Layer): 데이터를 송수신하는 장비 사이에 위치하여 인증, 암호화, 무결성을 보장하는 업계 표준 프로토콜
  • 인증(Authentication)
    • 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
    • 주요 유형
      • 지식 기반
        • 패스워드, 패스 프레이즈(Passphrase), 아이핀(i-PIN) 등
      • 소유 기반
        • 신분증, 메모리 카드(토큰), 스마트 카드, OTP 등
      • 생체 기반
        • 지문, 홍채, 얼굴, 음성 등
      • 행위 기반
        • 서명, 동작 등
      • 위치 기반
        • 콜백, GPS, IP주소 등
    • 보안 인증
      • Subject(주체): 자원에 대한 접근 요청
      • Object (객체): 접근 대상이 될 수 있는 아이템
      • Access(접근): 주체와 객체 사이의 정보 흐름
    • 접근 통제 절차
      • Identification : 식별(1단계)
      • Authentication: 인증(2단계)-검증 (EX.로그인)
      • Authorization: 승인 혹은 인가(3단계)-허용
      • Accountability/Accounting: 책임추적성(4단계)-행동추적,기록
    • 정보 통제 보호 모델
      • 벨-라파둘라: 기밀성, No Read Up-No Write Down
      • 비바: 무결성, No Read Down-No Write Up

보안 솔루션

  • 외부로부터 불법적인 침입을 막는 기술 및 시스템
  • 주요 보안 솔루션
    • 방화벽(Firewall)
    • 침입 탐지 시스템(IDS, Intrusion Detection System)
      • 시스템의 비정상적인 사용/오용/남용 등을 실시간으로 탐지하는 시스템
      • 오용 탐지, 이상 탐지
    • 침입 방지 시스템(IPS, Intrusion Prevention System)
      • 비정상적인 트래픽을 능동적으로 차단하고 격리하는 시스템
    • 데이터 유출 방지(DLP, Data Leakage/Loss Prevention)
    • 웹 방화벽(Web Firewall)
      • 일반 방화벽이 탐지하지 못하는 웹 기반 공격을 방어
    • VPN(가상 사설 통신망)
    • NAC(Network Access Control)
      • 내부 PC의 MAC 주소를 IP 관리 시스템에 등록 후 일관된 보안 관리 기능 제공
    • ESM(Enterprise Security Management)
      • 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
      • 방화벽, IDS, IPS 등을 통합하여 관리하여 비용 및 자원 절약
    • Tripwire
      • 크래커가 침입하여 시스템에 백도어를 만들어놓거나 설정을 변경할 경우 이를 감지하는 도구
profile
괴발개발라이프

0개의 댓글