* 소프트웨어 개발 보안 설계:
요구사항 분석 - 설계 - 구현 - 테스트 - 유지보수
*소프트웨어 개발 보안 요소:
- 기밀성 Confidentiality :
- 정보가 전송 중 노출되더라도 데이터를 읽을 수 없음.
- 시스템 내의 자원은 인가된 사용자에게만 접근 허용
- 가용성 Availability:
- 권한을 가진 사용자나 애플리케이션의 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
- 무결성 Integrity:
- 정당한 방법을 따르지 않고선 데이터가 변경될 수 없음
- 데이터의 정확성 및 완전성, 고의/악의로 변경되거나 훼손 또는 파괴되지 않음
* SW 개발 보안 용어:
- 자산 Asset : 서버의 하드웨어, 기업의 중요 데이터.
- 위협 Threat : 해킹, 삭제, 자산의 불법적 유출, 위/변조, 파손
- 취약점 Vulnerability: 평문전송, 입력값 미검증, 비밀번호 공유
- 위험 Risk : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성
* 입력데이터 검증 및 표현: 입력데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
* 공격기법 이해
1. DoS (Denial of Service) 서비스 거부 공격
: 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써 서버의 정상적인 기능을 방해
- Dos 공격의 종류:
SYN 플러딩 SYN Flooding | - TCP 프로토콜의 구조적 문제를 이용한 공격 - 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버 사용을 불가능하게 하는 공격 - 3-way-handshake 과정을 의도적으로 중단시킴 |
UDP 플러딩 UDP Flooding | - 대량의 UDP패킷을 만들어 임의의 포트 번호로 전송하여 응답메시지 ICMP를 생성하게 하여 자원 고갈 - ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기 |
스머프/스머핑 Smurf(ing) | - 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에 ICMP Echo 패킷을 직접 브로드캐스팅 하여 마비 - 바운스 사이트라고 불리는 제3의 사이트를 이용해서 공격 - 대비책: 각 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게 미리 설정 |
죽음의 핑 Ping of Death | - 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비 시킴 - 수신 측에서는 단편화된 패킷을 처리하는 과정에서 많은 부하, 재조합 버퍼의 오버플로우가 발생하여 서비스 불가능 |
랜드어택 Land Attack | - 출발지의 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄 - 수신자가 자기 자신에게 무한으로 응답을 보내도록 하는 공격. - 대비책: 송신 IP 주소와 수신 IP 주소의 적절성 검사 |
티어 드롭 Tear Drop | - IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 값을 전송 - 수신측에서 패킷을 재조합하는 과정에서 과부하, 오류 발생. |
봉크/ 보잉크 Bonk/Boink | - 프로토콜의 오류 제어를 이용한 방법으로 시스템의 패킷 재전송과 재조립이 과부하 유발. ex) 봉크: 같은 시퀀스 번호를 계속 보냄 보잉크: 일정한 간격으로 시퀀스 번호에 빈 공간 생성 |
핑 플로드 Ping Flood | - 특정 사이트에 많은 ICMP Echo를 보내면 응답을 하기위해 시스템 자원을 고갈시켜 시스템 정상가동을 방해. |
2. DDoS(Distributed DoS) 공격
: DoS 공격을 여러대의 공격자로 분산 배치하여 동시 동작하도록 특정 사이트 공격
- DDoS 공격 구성요소:
- 핸들러 Handler - 마스터 시스템의 역할을 수행하는 프로그램
- 에이전트 Agent - 공격 대상에 직접 공격을 가하는 시스템
- 마스터 Master - 공격자에게 직접 명령하는 시스템. 여러대의 에이전트를 관리.
- 공격자 Attacker - 공격을 주도하는 해커의 컴퓨터
- 데몬 프로그램 Daemon - 에이전트 시스템의 역할을 수행하는 프로그램
- DDoS 공격 도구:
- Trin00: 가장 초기 형태 데몬으로 UDP Flooding 공격을 수행. 몇개의 마스터들과 많은 수의 데몬들로 구성.
- TFN (Tribe Flood Network): UDP Flooding, TCP SYN Flooding 공격, ICMP 응답요청, 스머핑 공격 등을 수행.
- Stacheldraht : 공격자, 마스터, 에이전트가 쉽게 노출되지 않도록 암호화된 통신 수행
- DDoS 공격 대응방안:
- 차단 정책 업데이트
- 좀비PC IP 확보 : IP 위변조 여부 확인
- 보안 솔루션 운영: 방화벽, 침입탐지 시스템 등
- 홈페이지 보안 관리: 모의해킹등을 수행하여 보안 유지
- 시스템 패치: 시스템 취약점 패치
3. DRDoS (Distributed Reflection DoS) 공격
: 공격자가 출발지 IP를 공격 대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송하고 공격 대상자는 반사 서버로부터의 다량 응답을 받아 서비스 거부 상태가 되는 공격.
- DRDoS 대응방안
- ISP (인터넷 서비스 사업자)가 직접 차단
- 반사 서버에서 연결을 완료하지 않은 Syn 출처 IP를 조사하여 블랙리스트 운용
- 공격 대상 서버 IP와 Port를 변경, 필터링하여 운영
4. 애플리케이션 공격 종류
HTTP GET 플러딩 | - Cache Control Attack 공격 - 과도한 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 윈도 크기와 데이터 처리율을 감소시킨 상태에서 다수 HTTP 패킷을 지속적으로 전송하여 대상 웹 서버의 연결상태 장시간 지속 |
Hulk DoS | - 공격자가 공격대상 웹 사이트 웹 페이지 주소(URL)을 지속적으로 변경하며 다량으로 GET 요청 |
Hash DoS | - 많은 수의 파라미터를 POST 방식으로 웹 서버로 전달하여 다수의 해시 충돌 유도 |
5. 네트워크 서비스 공격 종류
네트워크 스캐너(Scanner), 스니퍼(Sniffer) |
- 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 사용하는 도구 |
패스워드 크래킹 (Password Cracking) |
- 사전(Dictionary) 크래킹: ID와 패스워드가 될 가능성이 있는 단어를 파일로 만들어놓고 대입 - 무차별 크래킹 (Brite Force): 패스워드로 사용될 수 있는 문자들을 무작위로 대입 - 패스워드 하이브리드(Password Hybrid Attack) : 사전 공격과 무차별 대입공격을 결합하여 공격 - 레인보우 테이블 공격 (Rainbow Table Attack): 패스워드별로 해시값을 미리 생성해서 테이블에 저장, 크래킹 하려는 해시값을 테이블에서 검색하여 역으로 패스워드를 찾는 기법 |
IP 스푸핑 (IP Spoofing) | - 서버에 대한 인증되지 않은 액세스 권한을 입수하는데 사용하는 기법 - 침입자가 패킷 헤더 수정을 통해 인증된 호스트의 IP 어드레스 위조 - 타깃 서버로 메시지 발송 후 패킷은 유입된것처럼 표시 |
ARP 스푸핑 (ARP Spoofing) | - 공격자가 특정 대상의 물리적 주소(MAC)를 자신의 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송. - 희생자의 ARP Cache table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경 |
ICMP Redirect 공격 | - 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름 변경 - ICMP Redirect 메시지를 공격자가 원하는 형태로 변경, 특정 목적지로 가는 패킷을 스니핑하는 기법 |
세션 하이재킹 (Session Hijacking) | - 케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격 기법 |
6. 시스템 보안 위협
시스템 보안 공격 기법 | 설명 | 탐지 / 대응 방안 |
버퍼 오버플로우(Buffer Overflow) 공격 | 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 프로세스 흐름을 변경시켜 악성 코드 실행 * 스택 버퍼 오버플로우 공격: - 메모리 영역 중 Local Value나 함수의 Return Address가 저장되는 스택 영역에서 발생. - 스택 영역에 할당된 버퍼 크기를 초과하는 데이터를 입력, 복귀주소를 변경하여 공격자가 원하는 임의의 코드 실행 공격 * 힙 버퍼 오버플로우 공격: - 프로그램 실행 시 동적으로 할당되는 힙 영역의 버퍼 크기를 초과하는 데이터를 실행하여 메모리 데이터, 함수 주소등을 변경, 공격자가 원하는 임의의 코드 실행 공격 - 인접한 메모리(Linked-list)의 데이터가 삭제될 수 있고 포인터 주소를 악용하여 관리자 권한 파일에 접근 |
- 스택가드(Stack Guard) 활용: 카나리(Canary)로 불리는 무결성 체크용 값을 두고 버퍼 오버플로우 발생 시 카나리 값 체크 - 스택 쉴드(Stack Shield) 활용: 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장, 함수 종료시 저장된 값과 스택의 RET 값을 비교해 다를 경우 프로그램 실행 중단 - ASLR(Address Space Layout Randomization) 활용: 주소 공간 배치를 난수화하고, 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정 주소 호출 차단. 리눅스에서 설정 가능. - 안전한 함수 활용: ex) strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf() |
백도어 (Backdoor) | - 암호시스템 혹은 알고리즘에서 정상적인 절차를 우회하는 기법. - 허가받지 않고 시스템에 접속하는 권리 취득 - 고정된 형태가 아니라 프로그램 일부 혹은 독자적인 프로그램이나 하드웨어일 수 있다. |
- 프로세스 및 열린 포트 확인: TCPView로 열린 포트를 확인하고 백도어 탐지. 리눅스에서 ps -ef (동작 중인 프로세스 확인), Netstat -an(열린 포트 확인)을 통해 백도어 확인 - SetUid 파일 검사: 새로 생성된 SetUid 파일이나 변경된 파일 확인을 통해 감지 - 백신 및 백도어 탐지 툴 활용 - 무결성 검사 : 리눅스에서 Tripwire 툴을 이용한 무결성 검사 실시. "No such file or directory"메시지 출력시 정상 - 로그분석 :wtmp, secure, lastlog, paccot, history, messages 사용하여 로그 분석 후 탐지 |
포맷 스트링 공격 (Format String Attack) |
- 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격. 외부로부터 입력된 값을 검증없이 입출력 함수의 포맷 스트링을 그대로 사용하는 경우 발생하는 취약점 공격 기법 - Printf(argv[1]) 을 포맷 스트링을 인자로 하는 함수 사용 시 포맷 스트링을 지정하지 않고 사용자 입력값을 통해 메모리 내용을 참조하거나 특정 영역의 값을 변경 가능 |
|
레이스 컨디션 공격 (Race Condition Attack) |
- 레이스 컨디션은 둘 이상의 프로세스나 스레드가 공유자원을 동시에 접근할 때 접근 순서에 따라 비정상적인 결과가 발생하는 조건/ 상황 - 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행중에 끼어들어 임시파일을 심볼릭 링크하여 악의적인 행위 수행을 유도 |
|
키로거 공격 (Key Logger Attack) |
- 컴퓨터 사용자의 키보드 움직임을 탐지하여 개인 정보를 빼가는 해킹 공격 - 키보드 활동을 기록하는 것을 키로깅 / 키스트로크 로킹 이라고 함 |
|
루트킷 (Rootkit) | - 시스템 침입 후 백도어, 트로이 목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능 제공 프로그램 모음 |
7. 보안 공격 기법
피싱 (Fishing) | 소셜 네트워크에서 지인, 특정 유명인으로 가장하여 불특정 다수의 정보 탈취 |
스피어 피싱 (Spear Phishing) | 특정 대상을 선정한 후 일반적 이메일로 위장한 메일을 지속적으로 발송, 클릭을 유도하여 사용자의 개인정보 탈취 |
큐싱 (Qshing) | - 큐알코드를 통해 악성 앱을 내려받도록 유도, 금융 정보 등을 빼내는 피싱공격 - 제로페이 확산에 따라 피해 증가 |
스미싱 (Smishing) | - SMS와 피싱의 합성어 - 신뢰할 수 있는 사람/기업처럼 가장하여 개인 정보, 결제를 유도하는 공격 |
애드웨어 (Adware) | 특정 소프트웨어를 실행, 설치 후 자동적으로 광고가 표시되는 프로그램 |
웜 (Worm) | - 스스로를 복제하여 전파하는 악성 소프트웨어 프로그램 - 바이러스와 달리 웜은 독자적으로 실행된다. |
악성 봇 (Malicious Bot) | - 해커의 명령에 의해 원격에서 제어/실행 가능한 프로그램 혹은 코드 - 스팸 메일 정송이나 DDoS에 활용 - '좀비PC'는 악성 봇에 의해 감염된 PC |
봇넷 (Botnet) | 악성 프로그램에 감염되어 이용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 상태 |
랜섬웨어 (Ransomware ) | Snake, Darkside 등 시스템을 잠그거나 데이터를 암호화해 사용할 수 없도록 만들고 이를 인질로 금전 요구 |
논리 폭탄 (Logic Bomb) | 특정 날짜,시간 등 조건 충족시 악의적인 기능을 유발할 수 있게 만든 코드의 일부로 소프트웨어 시스템에 의도적으로 삽입된 악성 코드 |
APT 공격 (Advanced Persistent Threat) | 특정 타깃을 목표로 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격 |
공급망 공격 (Supply Chain Attack) | - 소프트웨어 개발사의 네트워크에 침투, 코드 삽입 혹은 파일 변경으로 사용자 PC에 소프트웨어를 설치, 업데이트 시 감염되도록 하는 공격 |
제로데이 공격 (Zero Day Attack ) | - 보안 취약점이 발견되어 공표 전 해당 취약점을 악용하는 공격 - 공격의 신속성을 의미. 대응책이 공표되기 전에 공격하는 것이라 대응책이 없다 |
이블 트윈 공격 (Evil Twin Attack) | 무선 wifi 피싱기법으로 wifi 제공자처럼 행세하며 핫스팟에 연결한 무선 사용자들의 정보를 탈취 |
사이버불링 (Cyberbullying) | 인터넷 관련 공간에서 특정인을 집단적으로 따돌리거나 집요하게 괴롭히는 행위 |
트로이 목마 (Trojan Horses) | 겉보기엔 정상적인 프로그램으로 보이지만 실행하면 악성코드 실행 |
* 보안 방어 기법
- 사이버 킬체인 (Cyber Kill Chain)
: 록히드 마틴의 사이버 킬체인은 7단계 프로세스별 공격분석 및 대응을 체계화한 APT 방어 분석 모델
- 난독화 (Obfuscation)
: 코드의 가독성을 낮춰 역공학에 대한 대비를 위해 코드 일부, 혹은 전체를 변경.
* 개발 보안을 위한 암호화 알고리즘
- 대칭 키 암호방식: 암호화와 복호화에 같은 암호키를 사용.
- 블록 암호 방식: 고정 길이의 블록을 암호화. ex) DES, AES, SEED
- 스트림 암호 방식: 긴 주기의 난수열을 발생시켜 평문과 더물어 암호문 생성. ex) RC4
- 비대칭 키 암호방식: 공개 키, 개인 키가 존재하며 공개키는 누구나 알 수 있지만 개인키는 소유자만 알 수 있어야함.
- 해시 방식: 단방향 알고리즘으로서 임의의 데이터를 고정된 길의의 데이터로 매핑하는 함수.
원본 데이터를 유추하기 어려운 것을 이용. 연산 시간이 빠르다.
ex) SHA, MD5
* 시큐어 코딩: 잼재적인 보안 취약점을 사전에 제거하고 보안 요소들을 고려하며 개발하는 기법
* 시큐어 코딩 가이드
- 입력 데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API 오용
* 입력데이터 검증 및 표현
보안 약점 | 설명 | 대응방안 |
SQL삽입 ( SQL Injection ) |
|
동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지 |
경로 조작 및 자원 삽입 |
|
|
크로스 사이트 스크립트 (XSS) |
|
HTML 태그 사용을 제한, 혹은 < , > , & 등의 문자를 다른 문자로 치환 |
운영체제 명령어 삽입 |
|
웹 인터페이스를 통해 시스템 명령어 전달 방지. |
위험한 형식 파일 업로드 |
|
업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹사이트 파일 서버의 경로 분리, 실행 속성 제거 |
신뢰하지 않는 URL주소로 자동접속 연결 |
|
연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지 |
* 취약점 분석/평가:
- 취약점 분석/평가 계획 수립 - 취약점 분석/평가 대상 선별 - 취약점 분석 수행 - 취약점 평가 수행
* 보안 인증: 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차.
* 보안 인증의 유형
- 지식 기반 인증: password, Passphrase, 아이핀
- 소유 기반 인증: 신분증, 토큰, 스마트카드, OTP
- 생체 기반 인증: 지문, 얼굴, 음성, 홍채
- 위치 기반 인증: 콜백, GPS나 IP주소
- 특징(행위)기반 인증: 서명, 동작
* 접근 통제: 데이터가 저장된 객체와 사용하려는 주체 사이의 정보흐름 제한
* 접근 통제 기법
- 식별(Identification): 인증 서비스에 스스로를 확인시키기 위해 정보를 공급하는 주체활동
- 인증(Authentication): 주체의 신원을 검증하기 위함
- 인가(Authorization): 인증을 통해 식별된 주체에게 접근을 허용하는 활동
- 책임추적성(Accountability): 주체의 접근을 추적하고 행동을 기록하는 활동
* 접근 통제 유형:
- 임의적 접근통제 (DAC)
: 사용자/ 그룹 신분 기반으로 접근 제한. 정보의 소유자가 보안 레벨을 결정, 이에 대한 정보의 접근 제어를 설정.
유연한 접근 제어 서비스 제공. 객체별로 세분된 접근제어 가능
- 강제적 접근통제 (MAC)
: 주체가 갖는 접근 허가 권한에 근거하여 접근 제한. 시스템 정보의 허용 등급을 기준으로 제한. 중앙에서 정보를 수집, 분류하여 보안레벨 결정. 정책적으로 접근 제어 수행.
기밀성이 중요한 조직에서 사용.
- 역할 기반 접근 통제 (RBAC)
: 중앙 관리자가 조직 내 맡은 역할에 기초하여 접근 제한. 직책에 대해 권한을 부여해서 효율적인 권한 관리 가능
* 보안 솔루션: 외부로부터의 불법적인 침입을 막는 기술 및 시스템
- 방화벽 (Firewall): 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용/거부/수정하는 기능을 가진 침입 차단 시스템
- 침입 탐지 시스템(IDS; Intrusion Detection System): 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템.
- 오용 탐지(Misuse Detection): 미리 입력해둔 공격 패턴이 감지되면 알려준다.
- 이상 탐지(Anomaly Detection): 비정상적인 행위나 자원의 사용이 감지되면 알려준다.
- 침입 방지 시스템(IPS; Intrusion Prevention System)
: 비정상적인 트래픽을 능동적으로 차단, 격리하는 보안 솔루션.
방화벽과 침입탐지 시스템을 결합한 것. 패킷을 하나씩 검사 후 비정상적인 패킷이 탐지되면 방화벽 기능으로 차단.
- 데이터 유출 방지(DLP; Data Leakage/Loss Prevention)
: 내부 정보의 외부 유출을 방지하는 보안 솔루션
PC와 네트워크상의 모든 정보를 검색하고 행위를 탐지,통제하여 유출을 사전 방지
- 웹 방화벽(Web Firewall)
: 웹 기반 공격을 방어할 목적으로 만들어진 특화된 방화벽. 웹 관련 공격을 감시하고 서버에 도달하기 전에 차단.
- VPN(Virtual Private Network, 가상 사설 통신망)
: 공중 네트워크와 암호화 기술을 이용하여 사용자가 자신의 전용 회선을 사용하는 것 처럼 도와주는 보안 솔루션.
비용 부담을 줄일 수 있으며 지역적 제한이 없다.
- NAC(Network Access Control)
: 네트워크에 접속하는 내부 PC의 일관된 보안 관리 기능을 제공하는 보안 솔루션
- EMS(Enterprise Security Management)
: 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션. 보안 솔루션간 상호 연동을 통해 종합적 보안 관리 체계 수립 가능.
'정처기 실기' 카테고리의 다른 글
[정처기 실기] 응용 SW 기초 기술 활용 (2) (0) | 2022.07.17 |
---|---|
[정처기 실기] 응용 SW 기초 기술 활용 (1) (0) | 2022.07.14 |
[정처기 실기] 애플리케이션 테스트 관리 (2) (0) | 2022.07.11 |
[정처기 실기] 애플리케이션 테스트 관리 (1) (0) | 2022.07.11 |
[정처기 실기] 화면설계 (0) | 2022.07.10 |