소프트웨어 개발 보안 설계
1. SW 개발 보안 3대 요소
3대 요소 | 설명 |
기밀성 (Confidentiality) |
인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단 |
무결성 (Integrity) |
정당한 방법을 따르지 않고 데이터가 변경 되지 않으며, 데이터의 정확성 및 완전성과 고의/악의로 변경 or 훼손되지 않음 보장 |
가용성 (Availability) |
권한을 가진 사용자 or 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장 |
※ SW 개발 보안 용어
용어 | 설명 |
자산 | 조직의 데이터 or 소유자가 가치를 부여한 대상 |
위협 | 조직 or 기업의 자산에 악영향을 끼칠 수 있는 시간 or 행위 |
취약점 | 위협이 발생하기 위한 사전 조건으로 시스템의 정보 보증을 낮추는 데 사용되는 약점 |
위험 | 위협이 취약점을 이용해 조직의 자산 손실 피해를 가져올 가능성 |
2. DoS(Denial of Service) 공격
- 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 사용하지 못하게 하는 공격
3. DoS 공격 종류
공격기법 | 설명 |
SYN 플러딩 (SYN Flooding) |
- 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용하지 못하게 하는 공격 - TCP 연결 설정을 위한 3-way handshaking과정에서 half-open 연결 시도가 가능하다는 취약성을 이용하는 공격 방식 |
UDP 플러딩 (UDP Flooding) |
- 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 지속적으로 자원 고갈시키는 공격 |
스머프 / 스머핑 (Smurf / Smurfing) |
- 출발지 주소를 공격 대상의 IP로 설정해 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시킴 |
죽음의 핑 (PoD : Ping of Death) |
- ICMP 패킷(Ping)을 정상적인 크기보다 아주 크게 만들어서 전송 |
랜드어택 (Rand Attack) |
- 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보내 수신자가 자기 자신에게 응답을 보내게 함 |
티어드롭 (Tear Drop) |
- IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신 시스템이 문제를 발생하도록 만드는 공격 |
봉크 / 보잉크 (Bonk / Boink) |
- 시스템의 패킷 재전송과 재조립이 과부화를 유발 |
4. DDoS 공격
- 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트 공격
5. DDoS 공격 도구
공격 도구 | 설명 |
Trinoo | 많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는데 사용 |
TFN (Tribe Flood Network) |
Trinoo와 비슷한 분산 도구. 많은 소스에서 하나 혹은 여러개의 목표 시스템에 대해 서비스 거부 공격 |
Stacheldraht | 분산 서비스 거부 에이전트 역할 |
6. DRDoS (Dustributed Reflection DoS)
- 공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송
- 공격 대상자는 반사 서버로부터 다량의 응답을 받아 서비스 거부(DoS)가 되는 공격임
7. 세션 하이재킹 (Session Hijacking)
- TCP의 세션 관리 취약점을 이용한 공격기법
- 서버와 클라이언트가 TCP 통신을 하고 있을 때, RST 패킷을 보내고 시퀀스 넘버 등을 조작해 연결을 가로채는 공격 방식
8. 세션 하이재킹의 탐지방법
- 비동기화 상태 감지
- ACK 패킷 비율 모니터링
- 특정 세션에서 패킷 유실 및 재전송이 증가되는 것을 탐지
- 기대하지 않은 접속의 리셋 탐지
9. 애플리케이션 공격
공격 기법 | 설명 |
HTTP GET 플러딩 (HTTP GET Fooding) |
과도한 GET 메시지를 이용해 웹 서버의 과부하를 유발 |
Slowloris (Slow HTTP Header DoS) |
HTTP GET 메서드를 사용해 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않음 |
RUDY (Slow HTTP POST DoS) |
요청 헤더의 Content-Length를 비정상적 크기로 설정하고 메시지 바디 부분을 매우 소량으로 보내 계속 연결상태 유지시키는 공격 ex) Content-Length : 999999 설정 이후, 1바이트씩 전송 |
Slow Read Attack | TCP 윈도 크기와 데이터 처리율을 감소시킨 상태에서 다수 HTTP 패킷을 지속적으로 전송 |
Hulk DoS | 공격자가 공격대상 웹사이트 URL을 지속적으로 변경하면서, 다량으로 GET 요청을 발생시키는 서비스 거부 공격 |
Hash DoS | 조작된 많은 수의 파라미터를 POST 방식으로 웹 서버로 전달하여 다수의 해시 충돌을 발생 |
10. 네트워크 공격
공격기법 | 설명 |
스니핑 (Sniffing) |
- 직접 공격하지 않고 데이터만 몰래 들여다보는 수동적 공격 - 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 훔쳐보는 것 |
네트워크 스캐너(Scanner), 스니퍼(Sniffer) |
- 네트워크 HW, SW 구성의 취약점을 탐색하는 공격 도구 |
패스워드 크래킹 (Password Cracking) |
- 사전(Dictionary) 크래킹 : ID와 패스워드가 될 가능성이 있는 단어를 파일로 만들어 놓음 - 무차별(Brute) 크래킹 : 패스워드로 사용될 수 있는 글자를 무작위로 패스워드 자리에 대입 - 패스워드 하이브리드 공격 : 사전 + 무차별 - 레인보우 테이블 공격 : 패스워드 별로 해시 값을 미리 생성해서 역으로 패스워드를 찾음 |
IP 스푸핑 (IP Spoofing) |
- 침입자가 인증된 컴퓨팅 시스템인 것처럼 속이기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP로 위조해 타깃에 전송 |
ARP 스푸핑 (ARP Spoofing) |
- 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경 |
ICMP Redirect | - 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꿈 - Redirect 메시지를 공격자가 원하는 형태로 만들어서 공격 |
트로이 목마 | - 겉보기에는 정상적인 프로그램으로 보이지만, 실행하면 악성 코드를 실행하는 프로그램 |
11. 블루투스 공격 기법
용어 | 설명 |
블루재킹 | 블루투스를 이용하여 스팸메일처럼 메시지를 익명으로 퍼뜨리는 공격 |
블루프린팅 (Blueprinting) |
블루투스 공격 장치의 검색 활동 |
블루스나프 (Bluesnarf) |
블루투스의 취약점을 이용하여 장비의 임의 파일에 접근하는 공격 |
블루버그 | 블루투스 장비 간 취약한 연결 관리를 악용한 공격 |
12. 버퍼 오버플로우 공격(Buffer Overflow)
- 메모리에 할당된 버퍼크기를 초과하는 양의 데이터를 입력해 공격
13. 버퍼 오버플로우 공격 유형
- 스택 버퍼 오버플로우
- 힙 버퍼 오버플로우
14. 대응 방안
대응 방안 | 설명 |
스택가드 활용 (Stackguard) |
버퍼 오버플로우 발생 시, 카나리 값을 체크 |
스택쉴드 활용 (Stack Shield) |
함수 시작 시, 복귀 주소를 Global RET에 저장해 두고 함수 종료 시, 저장된 값과 스택의 RET값을 비교해서 다를 경우, 프로그램 중단 |
ASLR 활용 (Address Space Layout Randomization) |
주소 공간 배치를 난수화. 리눅스에서 설정가능 |
15. 백도어
- 어떤 제품이나 컴퓨터 시스템, 암호 시스템, 알고리즘에서 정상적인 인증 절차를 우회하는 기법
16. 주요 시스템 보안 공격기법
공격 기법 | 설명 |
포맷 스트링 공격 | 외부로부터 입력된 값을 검증하지 않고 그대로 사용하는 경우, 발생하는 취약점 공격법 |
레이스 컨디션 공격 (Race Condition Attack) |
실행되는 프로세스가 임시파일을 만드는 경우, 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을 심볼릭 링크하는 공격기법 |
키로거 공격 (Key Logger Attack) |
사용자의 키보드 움직임을 탐지해서 개인의 중요한 정보를 몰래 빼가는 해킹공격 |
루트킷 (Rootkit) |
시스템 침입 후, 사실을 숨긴 채 차후의 침입을 위해 불법적인 해킹기능을 제공하는 프로그램의 모음 |
크라임웨어 (Crimeware) |
해커가 시스템의 민감한 정보를 수집하거나, 네트워크상의 다른 시스템을 공격 or 추적 회피를 위한 중간 지점으로 이용하더라도 로그를 지워 버릴수 있어 탐지하기 어려운 도구 |
17. 보안 관련 용어
용어 | 설명 |
스피어피싱 (Spear Phishing) |
메일을 이용한 공격 |
스미싱 (Smishing) |
문자메시지를 이용한 공격 |
큐싱 (Qushing) |
QR코드를 이용한 공격 |
APT 공격 (Advanced Persistent Threat) |
특정 타깃을 목표로 하여 다양한 수단을 통해 지속적이고 지능적인 맞춤형 공격기법 |
공급망 공격 (Supply Chain Attack) |
SW 개발사의 네트워크에 침투하여 소스 코드를 수정하여 악의적인 코드를 삽입해 공격 |
제로데이 공격 (Zero Day Attack) |
보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하여 공격 |
웜 | 스스로 복제하여 네트워크로 전파하는 악성 SW 컴퓨터 프로그램 |
악성 봇 (Malicious Bot) |
스스로 실행되지 못하고 해커에 의해 제어, 실행 |
사이버 킬체인 | 7단계 프로세스별 APT 공격 방어 분석모델 |
랜섬웨어 (Ransomware) |
몸값을 요구하는 악성 SW |
이블 트윈 공격 (Evil Twin) |
무선 Wifi 피싱 기법 |
해시 함수 (Hash Function) |
임의의 길이를 갖는 값을 입력받으면, 고정된 길이의 값을 출력하는 함수 |
SET (Secure Electronic Transaction) |
온라인상의 안전한 거래를 위해 Visa와 Master Card에서 개발한 프로토콜 |
'정보처리기사 > DB' 카테고리의 다른 글
SW 개발 보안 구현 (0) | 2023.04.04 |
---|---|
소프트웨어 개발 보안 설계 2 (0) | 2023.04.03 |
공통 모듈 구현 (0) | 2023.03.31 |
개발환경 구축 (0) | 2023.03.30 |
집계성 SQL 작성 (0) | 2023.03.29 |