9. 소프트웨어 개발 보안 구축
SW 개발 보안의 3대 요소 - 기무가
- 기밀성(Confidentiality)
- 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성, 인가된 사용자에 대해서만 자원 접근이 가능해야하는 특성
- 무결성(Integrity)
- 정당한 방법을 따르지 않고서는 데이터가 변경 될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손되지 않음을 보장하는 특성, 인가된 사용자에서만 자원 수정이 가능하며 전송 중인 정보는 수정되지 않아야 하는 특성
- 가용성(Availability)
- 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장하는 특성, 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능해야 하는 특성
DoS(Denial of Service) 공격
시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 해 사용하지 못하게 하는 공격
DoS 공격 종류
- SYN 플러딩(Flooding)
- TCP 프로토콜의 구조적인 문제를 이용한 공격으로 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용하지 못하게 하는 공격
- UDP 플러딩(Flooding)
- 대량의 UDP패킷을 만들어 임의의 포트 번호로 전송하여 지속적으로 자원을 고갈시키는 공격
- 스머프(Smurf)/스머핑(Smurfing)
- 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격
- 죽음의 핑(PoD; Ping of Death)
- ICMP 패킷(Ping)을 정상적인 크기보다 아주 크게 만들어서 전송하여 다수의 IP 단편화가 발생하고, 수신 측에서는 단편화된 패킷을 처리하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 못하도록하는 공격기법
- 랜드어택(Rand Attack)
- 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격기법
- 티어드롭(Tear Drop)
- 공격자는 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격기법
DDos(Distributed DoS) 공격
여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트 공격하는 기법
DDoS 공격 도구
- Trinoo
- 많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는데 사용
- TFN(Tribe Flood Network)
- Trinoo와 비슷한 분산 도구, 많은 소스에서 하나 혹은 여러 개의 목표 시스템에 대해 서비스 거부 공격
Dos와 DDos의 차이점
- Dos는 직접 공격하고, DDos는 공격을 하도록 지시한다. Dos는 한 사람에 의해 공을을 감행하는 반면, DDos는 수많은 감염 호스트를 통해 공격을 감행한다.
DRDoS(Distributed Refleection DoS) 공격
- 공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부(DoS)가 되는 공격이다.
네트워크 공격
- 스니핑(Sniffing)
- 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격
- 네트워크 스캐너(Scanner), 스니퍼(Sniffer)
- 네트워크 하드웨어, 소프트웨어 구성의 취약점을 위해 공격자가 취약점을 탐색하는 공격 도구
- IP 스푸핑
- 침입자가 인증된 컴퓨팅 시스템인 것처럼 속이기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP로 위조하여 타깃에 전송 (IP 주소 위조)
- ARP 스푸핑
- 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 특정 호스트의 MAC 정보를 공격자의 MAC정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격 기법
- ICMP Redirect
- 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꿈, Redirect 메시지를 공격자가 원하는 형태로 만들어서 공격
- 트로이 목마
- 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그램
애플리케이션 공격
- HTTP GET Flooding
- 과도한 GET 메시지를 이용해 웹 서버의 과부하를 유발시키는 공격
- Slowloris(Slow HTTP Header DoS)
- HTTP GET 메서드를 사용해 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않음(₩₩₩~)
- RUDY(Slow HTTP POST DoS)
- 요청 헤더의 Content-length를 비정상적으로 크게 설정하고 메시지 바디 부분을 매우 소량을 보내 계속 연결상태 유지시키는 공격(999999 설정 이후 1바이트씩 전송)
- Slow HTTP Read DoS
- TCP 윈도 크기와 데이터 처리율을 감소시킨 상태에서(Zero Window Packet) 다수 HTTP 패킷을 지속적으로 전송
- Hulk DoS
- 공격자가 공격대상 웹사이트 URL을 지속적으로 변경하면서 다량으로 GET 요청을 발생시키는 서비스 거부 공격
시스템 보안 위협
- 버퍼 오버플로우(Buffer Overflow)
- 메모리에 할당된 버퍼크기를 초과하는 양의 데이터를 입력해 공격
- 유형 : 스택 버퍼 오버플로우, 힙 버퍼 오버플로우
대응방안
- 스택가드(Stack guard)
- 스택쉴드(Stack Shield)
- 함수 시작 시 복귀 주소를 Global RET에 저장해 두고 함수 종료 시 저장된 값과 스택의 RET값을 비교해서 다를 경우 프로그램 중단
- ASLR(Address Space Layout Randomization)
- 주소 공간 배치를 난수화, 리눅스에서 설정 가능
- 백도어
- 어떤 제품이나 컴퓨터 시스템, 암호시스템, 알고리즘에서 정상적인 인증 절차를 우회하는 기법
주요 시스템 보안 공격기법
- 포맷 스트링 공격
- 외부로부터 입력된 값을 검증하지 않고 그대로 사용하는 경우 발생하는 취약점 공격법
- 레이스 컨디션 공격
- 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을 심볼릭 링크하는 공격기법
- 키로거 공격
- 사용자의 키보드 움직임을 탐지해서 개인의 중요한 정보를 몰래 빼가는 해킹공격
- 루트킷
- 시스템 침입 후 사실을 숨긴 채 차후의 침입을 위해 불법적인 해킹기능을 제공하는 프로그램(트로이 목마, 백도어..)의 모음
보안 관련 용어
- 스피어피싱(Spear Phishing)
- 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일 을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도하여 사용자의 개인정보를 탈취하는 공격 기법
- 스미싱(Smishing)
- SMS와 피싱의 합성어, 문자메시지를 이용하여 신뢰할 수 잇는 사람 또는 기업이 보낸 것 처럼 가장하여 개인 비밀정보를 요구하거나 휴대폰 소액결제를 유도하는 피싱(사이버 사기)공격
- 큐싱(Qushing)
- QR와 피싱의 합성어, 스마트폰을 이용하여 금융 업무를 처리하는 사용자들에게 인증 등이 필요한 것처럼 속여 QR앱을 내려받도록 유도, 금융 정보 등을 빼내는 피싱(사이버 사기) 공격
- APT 공격(Advanced Persistent Threat)
- 특정 타깃을 목표로 하여 다양한 수단을 통해 지속적이고 지능적인 맞춤형 공격기법
- 공급망 공격(Supply Chain Attack)
- 소프트웨어 개발사의 네트워크에 침투하여 소스 코드를 수정하여 악의적인 코드를 삽입해 공격
- 제로데이 공격(Zero Day Attack)
- 보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하여 공격
- 웜(Worm)
- 스스로를 복제하여 네트워크로 전파하는 악성 소프트웨어 컴퓨터 프로그램
- 악성 봇(Malicious Bot)
- 스스로 실행되지 못하고 해커에 의해 제어, 실행
- 사이버 킬체인
- 랜섬웨어
- 파일들을 암호화하여 복호화할 수 없도록 하고, 피해자로 하여금 암호화된 파일을 인질처럼 잡고 몸값을 요구하는 악성 소프트웨어
- 이블 트윈 공격
- 무선 Wifi 피싱기법으로 공격자는 합법적인 Wifi 제공자처럼 행세하며 노트북이나 휴대전화로 핫스팟에 연결한 무선 사용자들의 정보를 탈취하는 무선 네트워크 공격 기법
- 사회 공학(Social Engineering)
- 사람들의 심리와 행동 양식을 교묘하게 이용해서 원하는 정보를 얻는 공격 기법
- 트러스트존(TrustZone)
- ARM 사에서 개발한 보안 기술로 프로세서 안에 독립적인 보안 구역을 따로 두어 중여한 정보를 보호하는 하드웨어기반의 보안 기술
- 타이포스쿼팅(Typosquatting)
- 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 일로, URL 하이재킹이라고도 부른다.
서버 접근 통제 유형
- 임의적 접근 통제(DAC)
- 신분에 근거하여 객체에 대한 접근을 제한하는 방법
- 강제적 접근 통제(MAC)
- 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법
- 역할 기반 접근 통제(RBAC)
- 중앙 관리자가 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법
3A
유무선 이동 및 인터넷 환경에서 가입자에 대한 안전하고, 신뢰성 있는 인증, 권한 검증, 과금 기능을 체계적으로 제공하는 정보 보호 기술
- 인증(Authentication)
- 접근을 시도하는 가입자 또는 단말에 대한 식별 및 신분을 검증
- 권한 부여(Authorization)
- 검증된 가입자나 단말에게 어떤 수준의 권한과 서비스를 허용
- 계정 관리(Accounting)
- 리소스 사용에 대한 정보를 수집하고 관리하는 서비스
접근 통제 보호 모델 - 벨기 - 비무
- 벨-라파둘라 모델 : 미 국방부 지원 모델, 기밀성 강조
No Write Down/No Read Up - 보안수준이 높은 주체는 보안 수준이 낮은 객체에 기록하면 안 됨
- 비바 모델 : 무결성 보장
No Write Up/No Read Down - 낮은 등급의 주체는 상위 등급의 객체를 수정 할 수 없음
인증 관련 기술
- SSO(Single Sign On)
- 커버로스에서 사용되는 기술로 한번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있도록 해주는 인증 기술
- 커버로스
- 1980년대 중반 MITdml Athena 프로젝트의 일환으로 개발되었으며, 클라이언트/서버 모델에서 동장하고 대칭 키 암호 기법에 바탕을 둔 티켓 기반의 프로토콜
대칭 키 암호방식
암호화와 복호화에 같은 암호키를 쓰는 알고리즘으로 비밀 키 전달을 위한 키교환이 필요하고, 암호화 및 복호화의 속도가 빠르다 (암호화 = 복호화)
- DES(Data Encryption Standard)
- 미국 연방 표준국(NIST)에서 발표한 대칭 키 기반의 블록 암호화 알고리즘
- 블록 크기 64bit, 키 길이 56bit인 페이스텔 구조
- SEED
- 1999년 국내 한국인터넷진흥원(KISA) 개발한 블록 암호화 알고리즘(블록크기 128bit)
- AES(Advanced Encryption Standard)
- DES를 대체, 3 DES의 성능문제를 극복하기 위해 개발, 미국 표준 기술 연구소(NIST)
- ARIA(Academy Research Institute, Agency)
- 2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘(블록 크기 128bit)
- 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발
- IDEA(International Data Encryption Algorithm)
- DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘
- 128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦)
- LFSR(Linear Feedback Shift Resister)
- 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들을 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
- skipjack
- 미 국가안보국(NSA)에서 개발한 Clipper 칩에 내장된 알고리즘으로 소프트웨어로 구현되는 것을 막고자 Fortezza Card에 칩 형태로 구현
비대칭 키 암호 방식(= 공개키 암호 방식)
사전에 개인 키를 나눠 가지지 않은 사용자들이 안정하게 통신하는 방식 (암호화 ≠ 복호화)
- 디피-헬만(Diffie-Hellman)
- 최초의 공개키 알고리즘, 이산 대수의 계산이 어려운 문제를 기본 원리로 하고 있다
- RSA(Rivest shamir Adleman)
- 3명의 MIT 수학교수가 고안, 소인수 분해 수학적 알고리즘
- ECC(Elliptic Curve Cryptography)
- RSA 암호 방식 대안, 타원 곡선 암호(ECC)
- ElGamal
- 이산대수 계산이 어려운 문제를 기본원리로 함?
단방향 (복호화 불가능)
해시 암호 방식 : MAC(키 사용), MDC(키 사용X)
- MD5
- MD4개선, 프로그램이나 파일의 무결성 검사에 사용
- SHA-1
- NSA에서 미 정부 표준으로 지정, DSA에서 사용
- SHA-256/384/512
IPSec(Internet Protocol Security)
- IP계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜 (인증, 암호화, 키 관리 프로토콜로 구성)
입력 데이터 검증 및 표현 취약점
- XSS(Cross Site Script)
- 검증되지 않은 외부 입력 데이터가 포함된 웹페이지를 사용자가 열람할 때 부적절한 스크립트가 실행되는 공격
- 사이트 간 요청 위조(CSRF; Cross Site Request Forgery)
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
- SQL 삽입(Injection)
- 악의적인 SQL 구문을 삽입하고 실행시켜 정보를 열람, 조작할 수 있는 취약점 공격법
네트워크 보안 솔루션
- 방화벽(Firewall)
- 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템
- 웹 방화벽 (WAF; Web Application Firewall)
- 네트워크 접근 제어(NAC; Network Access Control)
- 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션
- 침입 탐지 시스템(IDS; Intrusion Detection System)
네트워크에 발생하는 이벤트를 모니터링하고, 비인가 사용자의 침입을 실시간으로 탐지하는 시스템
- 침입 방지 시스템(IPS; Intrusion Prevention System)
- 네트워크에 대한 공격이나 침입을 실시간적으로 차단하는 시스템
- 무선 침입 방지 시스템(WIPS; Wireless Intrusion Prevention System)
- 인가되지 않은 무선 단말기의 접속을 자동 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지
- 통합 보안 시스템(UTM; Unified Threat Management)
- 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
- 가상사설망(VPN; Virtual Private Network)
- 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용해 마치 전용망을 사용하는 효과를 가지는 보안 솔루션
- SIEM(Security Information and Event Management)
- 다양한 보안 장비와 서버, 네트워크 장비등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협 상황을 인지하고, 침해사고에 신속하게 대응하는 보안 관제 솔루션
- ESM(Enter Security Management)
- 방화벽, 침입 탐지 시스템(IDS), UTM, 가상 사설망 등의 여러 보안 시스템으로부터 발생한 각종 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템