-
9-1. 소프트웨어 보안 설계공부 일기/정보처리기사 실기 2024. 7. 13. 14:35728x90
1-1. 요구사항 분석 https://minjh1126.tistory.com/44
1-2. 현행시스템 분석 https://minjh1126.tistory.com/45
1-3. 요구사항 확인 https://minjh1126.tistory.com/46
2-1. UI 요구사항 확인 https://minjh1126.tistory.com/47
2-2. UI 설계 https://minjh1126.tistory.com/48
7-1. 데이터베이스 기본 https://minjh1126.tistory.com/49
7-2. 응용 SQL 작성하기 https://minjh1126.tistory.com/50
8-1. 개발환경 구축 https://minjh1126.tistory.com/51
8-2. 공통 모듈 구현 https://minjh1126.tistory.com/52
1. 소프트웨어 보안 설계
1. SW개발 보안의 구성 요소
- 보안 3대 요소
- 기밀성: 인가되지 않은 개인이나 시스템 접근에 따른 정보 공개 및 노출 차단. 인가된 사용자에게만 접근 허용.
- 무결성: 정당한 방법이 아니면 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 데이터의 훼손 또는 파괴가 없음을 보장. 인가된 사용자만 수정이 가능하고 전송 중인 정보는 수정되지 않음.
- 가용성: 권한이 있는 사용자나 애플리케이션이 원하는 기능을 계속 사용할 수 있도록 보장. 인가된 사용자는 권한이 있는 범위 내에서 언제든 자원 접근이 가능해야함.
2. 공격 기법
- Dos: 시스템의 자원을 부족하게 해 사용하지 못하도록 함. 수많은 접속 시도를 만들어 서비스 이용이 안 되게 하거나, 서버의 TCP 연결을 소진시키기 등
- 종류
- SYN 플러딩: TCP프로토콜의 구조적 문제를 이용한 공격으로, SYN패킷만 보내 점유함으로써 사용 불가능하게 함. 공격자는 ACK을 발송하지 않고 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지 않고 자원만 소비함.
- UDP 플러딩: 대량의 UDP 패킷을 만들어 임의의 포트번호로 전송해 응답메세지를 생성하게 함. ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기함.
- 스머프/스머핑: 출발지 주소를 공격 대상의 IP로 설정해 네트워크 전체에게 ICMP Echo패킷을 직접 브로드캐스팅해 마비시킴. 바운스 사이트인 제3의 사이트 이용.
- 죽음의 핑(Ping of Death): ICMP 패킷을 아주 작게 만들어 전송함. 다수의 IP단편화가 발생하고, 수신 측에서는 단편화된 패킷을 재조합하는 과정에서 많은 부하가 발생함으로 정상적인 서비스가 안 됨.
- 랜드 어택: 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로서 수신 측은 루프를 돌게 됨. 가용성 침해.
- 티어드롭: IP패킷의 재조합 과정에서 잘못된 Fragment Offset정보로 인해 수신 시스템 문제를 발생. IP Fragment Offset 값을 서로 중첩되도록 조작해 전송하고, 그걸 재조합하며 오류가 발생해 시스템 기능을 마비시킴.
- 봉크: 패킷을 분할해서 보낼 때 첫 패킷을 1번으로 보낸 후 다음 패킷 번호들도 모두 1로 조작해 보냄. 똑같은 번호라 오류 발생.
- 보잉크: 보내는 패킷들 중간에 시퀀스 번호를 비정상적인 상태로 넣어 부하를 일으킴.
- DDoS: 여러 대의 공격자를 분산 배치해 동시에 공격.
- 구성 요소
- 핸들러: 마스터 시스템 역할의 프로그램.
- 에이전트: 공격 대상에 직접 공격을 가함.
- 마스터: 공격자에게서 명령을 받는 시스템. 여러대의 에이전트를 관리.
- 공격자: 공격을 주도하는 해커의 컴퓨터.
- 데몬 프로그램: 에이전트 시스템의 역할을 수행하는 프로그램.
- 공격 도구
- Trinoo: 많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는데 사용됨. 몇 개의 서버와 많은 클라이언트들로 이루어짐.
- Tribe Flood Network: Trinoo와 유사한 분산 도구로 많은 소스에서 목표 시스템에 대해 DDoS 수행. TFN 서비스 거부 공격은 공격자가 클라이언트 프로그램을 통해 공격 명령을 FTN서버들에게 보냄으로써 이뤄짐. UDP Flood나 TCP SYN Flood, ICMP echo, 스머프/스머핑 등 가능.
- Stacheldraht: 분산 서비스 거부 에이전트 역할을 하는 리눅스나 solaris 시스템용 멀웨어 도구. ICMP SYN UDP Flood나 스머프 등의 DDoS 공격 가능.
- DDoS 공격 종류
- 대역폭 소진 공격
- UDP, ICMP Traffic Flooding: UDP/ICMP Flooding, DNS Query Flooding
- TCP Traffic Flooding: SYN, SYN+ACK Flooding
- IP Flooding: 랜드 어택, Tear Drop
- 서비스 마비 공격
- HTTP Traffic Flooding: GET Flooding, Get with cache-control.
- HTTP Header/Option Spoofing: Slowris, Slowloris, SLow Read Attack
- 다른 7계층 Flooding: Hash Dos, Hulk DoS, FTP/SMTP Attack
- 대역폭 소진 공격
- 구성 요소
- DRDoS: 출발지 IP를 공격 대상 IP로 위조해 다수의 반사 서버로 요청 정보를 전송. 수신 측은 반사 서버로부터 다량의 응답을 받아 서비스 거부.
- 절차
- 출발지 IP 변조: 공격 대상자 IP로 Spoofing 해 SYN 패킷을 경유지 서버로 전송.
- 공격 대상자 서버로 응답: SYN 패킷을 받은 경유지 서버는 Spoofing된 IP로 SYN/ACK 전송
- 서비스 거부: 많은 SYN/ACK으로 서비스 거부
- 절차
- 세션 하이재킹: TCP 세션 관리 취약점 이용. 피해자와 서버 사이의 패킷을 스니핑해 시퀀스 번호를 확인하고, 둘 사이를 비동기화 상태로 만든 클라이언트 시퀀스 번호를 이용해 공격. 비동기화 상태로 재전송 패킷이 증가하며 네트워크 부하 등이 증가.
- 애플리케이션 공격
- HTTP GET 플러딩: 과도한 GET 메세지로 웹 서버의 과부하 유발. HTTP 캐시 옵션을 조작해 캐싱 서버가 아닌 웹서버가 직접 처리하도록 유도. 웹 서버 자원 소진 유발.
- Slowloris: HTTP GET 메서드로 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않고 다른 걸 전송해 웹 서버와의 연결을 장시간 지속시키고 연결 자원을 소진.
- RUDY Attack(Slow HTTP POST Dos): 요청 헤더의 Content-length를 비정상적으로 크게 설정해 메세지 마디 부분을 작게 보내 계속 연결 유지.
- Slow Read Attack: TCP 윈도 크기를 낮게 설정해 서버로 전달하고, 그 윈도 크기 기준으로 통신하며 데이터 전송이 완료될 때까지 연결을 유지하게 만듦.
- Hulk Dos: 공격자가 공격 대상 웹 사이트 URL을 지속적으로 변경해 다량으로 GET 요청을 발생시킴. URL을 변경하는 이유는 임계치 기반의 디도스 대응 자비를 우회하기 위함.
- 네트워크 공격
- 스니핑: 직접적인 공격 대신 데이터만 들여다봄.
- 네트워크 스캐너/스니퍼: 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 취약점을 탐색.
- 패스워드 크래킹
- 사전 크래킹: 시스템이나 서비스의 ID와 비밀번호를 크랙하기 위해 가능성이 있는 단어들을 파일로 만들어놓고 하나씩 대입.
- 무차별 크래킹: 비밀번호로 사용될 수 있는 영문자, 숫자, 특수문자를 무작위로 대입.
- 패스워드 하이브리드 공격: 사전 크래킹과 무차별 크래킹 결합.
- 레인보우 테이블 공격: 비밀번호 별로 해시 값을 미리 생성해 테이블에 모아놓고, 크래킹하고자 하는 해시 값을 테이블에서 검색해 비밀번호를 찾음.
- IP 스푸핑: 시스템 정보를 빼내기 위해 본인의 패킷 헤더를 인증된 호스트의 IP 주소로 위조.
- ARP 스푸핑: 공격자가 특정 호스트의 MAC 주소를 자신의 MAC주소로 위조한 ARP Reply를 만들어 피해자에게 지속적 전송. 피해자의 ARP 캐시 테이블에 특성 호스트의 MAC 정보를 공격자의 MAC정보로 변경. 피해자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑.
- ICMP Redirect 공격: 3계층에서 스니핑 시스템을 네트워크에 존재하는 다른 라우터라고 알림으로써 패킷의 흐름을 변경. ICMP Redirect 메세지를 원하는 형태로 만들어 특정 목적지로 가는 패킷을 스니핑.
- 트로이 목마: 겉보기에는 정상적인 프로그램이지만 실행하면 악성 코드를 실행.
- 시스템 보안 위협
- 버퍼 오버플로우: 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력해 프로세스 흐름을 변경시켜 악성 코드를 실행시키도록 함.
- 유형
- 스택 버퍼 오버플로우: 지역 변수나 반환 주소가 저장되는 스택 영역의 오버플로우. 스택 영역에 많은 양의 데이터를 입력해 복귀 주소를 변경하고 공격자가 원하는 임의의 코드를 실행.
- 힙 버퍼 오버플로우: 프로그램 실행 시 동적으로 할당되는 힙 영역의 오버플로우. 힙 영역의 많은 데이터를 입력해 메모리의 데이터와 함수 주소 등을 변경하고 공격자가 원하는 임의의 코드 실행. 인접한 메모리의 데이터가 삭제될 수 있고 포인터 함수의 주소가 있으면 악용해 관리자 권한 파일에 접근하거나 특정 코드 실행 가능.
- 대응
- 스택 가드: 무결성 체크용 카나리 값을 복귀 주소와 변수 사이에 삽입해 버퍼 오버플로우가 발생하면 카나리 값을 체크. 변했으면 복귀 주소를 호출하지 않음.
- 스택 쉴드: 함수 시작 시 복귀 주소를 Global Ret이라는 특수 스택에 저장하고, 함수 종료 시 저장된 값과 RET값을 비교해 다르면 오버플로우로 간주하고 프로그램 중단.
- ASLR: 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하고 실행 시마다 메모리 주소를 변경시켜 특정 주소 호출을 차단. 리눅스에서 설정 가능.
- 안전한 함수 사용
- 유형
- 백도어: 정상적인 절차를 우회하는 기법. 프로그램 일부에 감춰져있거나 독자적 프로그램 형태 등으로 갖춰져있음.
- 탐지 기법
- 프로세스 및 열린 포트 확인
- Setuid 파일 검사
- 백신 및 백도어 탐지 툴 활용
- 무결성 검사
- 로그 분석
- 탐지 기법
- 주요 시스템 보안 공격 기법
- 포맷 스트링 공격: 포맷 스트링을 인자로 하는 함수의 취약점 이용. 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그대로 사용하는 경우 사용. 공격자는 포맷 스트링을 조작해 메모리 내용을 참조하거나 특정 영역의 값을 변경 가능.
- 레이스 컨디션 공격: 둘 이상의 프로스세스나 스레드가 공유 자원을 동시에 접근할 때 접근 순서에 따라 비정상적인 결과가 발생하는 조건이나 상황. 실행되는 프로세스가 임시 파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중 끼어들어 임시파일을 심볼릭 링크하여 악의적인 행위를 수행하게 함.
- 키로거 공격: 키보드의 움직임을 탐지해 저장하고 개인정보를 몰래 빼감. 키보드의 활동을 기록하는 건 키로깅 또는 키스트로크 로깅이라 함.
- 루트킷: 주로 불법적인 해킹에 사용되는 기능을 제공하는 프로그램 모음.
- 버퍼 오버플로우: 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력해 프로세스 흐름을 변경시켜 악성 코드를 실행시키도록 함.
- 보안 관련 용어
- 스피어피싱: 특정 대상에게 일반적인 메일로 위장한 메일을 지속적으로 전송해, 발송 메일의 링크나 첨부파일을 클릭하면 개인 정보를 탈취.
- 스미싱: SMS + 피싱. 신뢰할 수 있는 사람으로 위창해 메세지를 보내 개인정보를 요구하거나 소액 결제를 유도.
- 큐싱: QR코드 + 피싱. 스마트폰을 이용해 금융 업무를 처리하는 사용자에게 인증을 위해 QR코드를 보내는 척하며 악성 어플을 내려받도록 유도.
- 봇넷: 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결됨.
- APT 공격: 지속적이고 지능적인 맞춤형 공격. 특수 목적의 조직이 하나의 목표에 대해 공격함.
- 공급망 공격: 소프트웨어 개발사 네트워크에 침투해서 코드를 수정하거나 악의적 코드를 삽입해 사용자 PC에 소프트웨어 설치 또는 업데이트 시 자동적으로 감염되게 함.
- 제로데이 공격: 보안 취약점이 발견되어 공표되기 전에 그 취약점을 악용하는 공격. 공격의 신속성의 의미. 오류가 알려지기 전에 공격이 들어가므로 대처 방법이 없음.
- 웜: 스스로를 복제해 네트워크 등으로 전파하는 악성 소프트웨어 컴퓨터 프로그램. 바이러스와 유사하지만 독자적으로 실행되어 실행 프로그램이 필요하지 않음.
- 악성 봇: 스스로 실행되지 못하고 해커의 명령으로 원격에서 제어 혹은 실행 가능한 코드. 취약점이나 백도어로 전파되며 DDoS등에 사용. 악성 봇에 감염된 PC를 좀비 PC라고도 부름.
- 사이버 킬체인: 공격형 방위시스템으로 지능적, 지속적 사이버 공격에 대해 7단계 프로세스로 APT 공격 방어 분석 모델.
- 랜섬웨어: 감염된 시스템의 파일들을 암호화해 복호화 값을 요구.
- 이블 트윈: 무선 wifi 피싱 기법으로 합법적인 wifi인 척하며 접속한 무선 사용자들의 정보를 탈취.
- 사회 공학: 사람들의 심리와 행동 양식을 이용해 원하는 정보를 얻어냄.
- 트러스트 존: 프로세스 안의 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술.
- 타이포스쿼팅(URL 하이재킹): 유명 도메인과 유사한 도메인을 등록해 URL에서 오타가 났을 때 그 도메인으로 들어오게 함.
3. 서버 인증 및 접근 통제
- 서버 인증 기술 유형
- 지식 기반 인증: 기억하고 있는 지식. 알고 있는 것 - ID, 비번
- 소지 기반 인증: 소지하고 있는 물품. 갖고 있는 것 - 공인인증서, OTP
- 생체 기반 인증: 고유한 사용자 생체 정보. 대체하는 것 - 홍채, 정맥, 얼굴, 지문
- 특징(행위) 기반 인증: 사용자 특징. 하는 것 - 서명, 발걸음, 몸짓
- 서버 접근 통제 유형
- 임의적 접근 통제(DAC): 주체나 신분에 근거해 접근 제한. 신분 기반의 접근 통제. 자원과 관련된 ACL(Access Control List)을 수정해 자원에 대한 권한을 부여.
- 강제적 접근 통제(MAC): 객체 정보의 허용등급과 주체가 갖는 허가 권한에 근거해 접근 제한. 규칙 기반 접근 통제.
- 역할 기반 접근 통제(RBAC): 조직 내 맡은 역할에 기초해 자원에 대한 접근 통제. 자원에 대한 접근은 사용자에게 할당된 역할에 기반함. 관리자가 사용자에게 역할을 부여.
- 3A
- 인증(Authentication): 접근을 시도하는 가입자나 단말을 식별하고 신분을 검증.
- 권한 부여(Authorization): 검증된 가입자나 단말에게 권한과 서비스를 허용.
- 계정 관리(Accouting): 리소스 사용에 대한 정보를 수집하고 관리하는 서비스.
- 인증 관련 기술
- SSO: 커버로스에서 사용되는 기술. 한 번의 인증으로 여러 컴퓨터의 자원을 사용할 수 있음.
- 커버로스: 클라이언트 서버 모델에서 대칭키 암호기법을 바탕을 둔 티켓 기반 프로토콜.
- 접근 보호 통제 모델
- 벨-라파듈라 모델: 기밀성을 강조하며 강제적 정책으로 접근 통제 모델.
- 속성
- No Read Up: 보안 수준이 낮으면 보안 수준이 높은 객체를 읽지 못함. 객체와 동일한 등급이거나 높은 등급일 때 읽을 수 있음.
- No Write Down: 보안 수준이 높으면 보안 수준이 낮은 객체에 기록 못함. 객체와 동일하거나 낮은 등급일 때 기록 가능.
- 속성
- 비바 모델: 벨-라파듈라의 단점을 보완하고 무결성 보장.
- 속성
- No Read Down: 높은 등급이면 낮은 등급의 객체를 읽을 수 없음.
- No Write Up: 낮은 등급이면 높은 등급의 객체를 수정할 수 없음.
- 속성
- 벨-라파듈라 모델: 기밀성을 강조하며 강제적 정책으로 접근 통제 모델.
4. 암호화 알고리즘
- 양방향
- 대칭키 암호 방식(비밀키 암호화 방식): 암호화와 복호화에 같은 키를 사용. 비밀키 전달을 위한 키 교환이 필요하고, 속도가 빠르지만 기밀성만 보장됨. 키 개수는 (n*(n-1)) / 2.
- 비대칭 키 암호 방식(공개키 암호화 방식): 공개 키와 개인키가 존재하며, 공개 키는 누구나 알 수 있지만 개인키는 소유자만 알 수 있음. 키의 개수는 2 * n고 속도가 느림.
이름 방식 설명 DES 대칭키 암호화 방식 블록 암호화, 블록 크기: 64bit, 키 길이: 56bit
DES의 보안을 강화한 3 DES도 있음SEED 국내 블록 암호화
비밀키로부터 나온 라운드 키를 사용해 16라운드를 거쳐 암호화
블록 크기: 128bit - 키길이에 따라 128, 256 분류AES 블록 암호화, 3 DES의 성능 문제 극복
블록 크기: 128bit - 키길이에 따라 128, 192, 256 분류
라운드 수 : 10, 12, 14 라운드ARIA 블록 암호화, 블록 크기: 128bit - 키 길이에 따라 128, 192, 256 분류
경량 환경 및 HW 효율성 향상을 위해 개발, 바이트 연산IDEA DES를 대체하기 위한 블록 암호화
키: 128bit, 라운드 수: 8, 암호문 크기: 64bitLFSR 스트림 암호화, 레지스터에 입력 값이 이전 값의 선형 함수(XOR)로 계산됨 Skipjack 칩에 내장된 블록 암호화, 음성 암호화에 사용
입출력: 64bit, 키: 80bit, 라운드 수: 32디피-헬만 비대칭 키 암호화 방식 최초의 공개키 알고리즘, 이산대수의 계산이 어려운 접을 이용
공개키를 안전하게 공유하는 방법 제시
많은 키 분배 방식에 관한 연구의 기본이 됨RSA 소인수분해 문제가 기반이 됨 ECC 타원 곡선 암호의 이산대수 사용
RSA의 속도 해결, 키 비트수가 적지만 동일한 성능ElGamal 이산대수의 계산이 어려운 점 이용
RSA와 같이 전자서명과 데이터 암호화, 복호화에 사용- 일방향(해시 암호 방식): 임의 길이의 정보를 입력 받아 고정된 길이의 암호문 출력. 해시 암호화 알고리즘이 적용된 정보는 복호화가 불가능함.
- MAC: 키를 사용하는 메세지 인증 코드. 메세지의 정당성을 입증하기 위해 함께 보내지는 값. 무결성과 송신자의 인증을 보장.
- MDC: 수신자는 받은 데이터로부터 새 MDC를 생성해 수신자에게 받은 MDC와 비교. 무결성 보장.
이름 설명 MD5 MD4를 개선함, 파일의 무결성 검사에 사용
52bit 입력 메세지 블록에 대해 차례대로 동작해 128bit의 해시값 생성SHA-1 DSA에서 사용, 160bit의 해시 값 생성 SHA-256 SHA의 한 종류로 256bit의 해시값 생성
AES의 키 길이인 128, 192, 256bit에 대응하도록 출력 길이를 늘림HAS-169 국내 표준 서명 알고리즘, MD5와 SHA1의 장점을 합침 HAVAL 메세지를 1024bit으로 나누고 128, 160, 192, 224, 256bit인 메세지 다이제스트 출력 5. 데이터 암호화 전송
- IPsec: IP계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜
- 기능
- 기밀성: 대칭 암호화를 위한 데이터 기밀성 제공
- 비 연결형 무결성: 메세지가 위변조 되지 않았음을 보장
- 인증: 데이터 원천과 송신처 인증
- 재전송 공격 방지: 송신 측에서 IP패킷별로 순서 번호를 통해 재전송 방지
- 접근 제어: 시스템 접근 제어
- 동작 모드
- 전송 모드: IP패킷의 페이로드(IP 상위 프로토콜 데이터)를 보호.
- 터널 모드: IP패킷 전체를 보호, IP패킷을 IP sec으로 캡슐화해 IP 헤더를 식별할 수 없게끔 함으로 네트워크 상의 패킷 전송이 불가능. 전송 구간 주소 정보를 담은 새 IP헤더 추가.
- 프로토콜
- 인증 프로토콜: 메세지 인증 코드(MAC)을 이용해 인증과 송신처 인증을 제공. 무결성과 인증을 제공하고 기밀성은 제공하지 않음.
- 암호화 프로토콜: 메세지 인증 코드(MAC)와 암호화를 이용해 인증, 송신처 인증, 기밀성, 무결성 제공.
- 키 관리 프로토콜: 키를 주고받는 알고리즘.
- 기능
- SSL/TSL: 전송계층(4)과 응용계층(7) 사이의 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증, 전송시 무결성 보장 프로토콜
- 특징
- Netscape사 개발
- 다양한 암호 통신 방법 활용: 대칭 키 암호화, 공개키 암호화, 해시함수, 메세지 인증 코드, 의사난수 생성기, 전자 서명 조합해 암호화 수행.
- 특정 암호 기술에 의존하지 않음: 암호 도구 목록을 변경해 강력한 알고리즘 사용. 'https://'로 사용.
- 보안 기능
- 기밀성: 3DES, AES 같은 대칭키 암호화 알고리즘 제공.
- 상호 인증: 클라이언트, 서버 간 신뢰를 위해 인증 사용. RSA, DDS(전자서명) 등 사용.
- 메세지 무결성: 안전한 해시 알고리즘을 사용해 메세지 인증 코드 생성.
- 특징
- S-HTTP: 웹 상에서 트래픽을 암호화 하는 방법 중 하나로 클라이언트-서버로 전성되는 모든 메세지를 각각 암호화해 전송. HTTP를 사용한 애플리케이션에서만 가능.
728x90'공부 일기 > 정보처리기사 실기' 카테고리의 다른 글
9-2. 소프트웨어 보안 개발 구현 (0) 2024.07.16 3-1. 논리 데이터 저장소 확인 (0) 2024.07.14 8-2. 공통 모듈 구현 (0) 2024.07.09 8-1. 개발환경 구축 (0) 2024.07.09 7-2. 응용 SQL (0) 2024.07.09 - 보안 3대 요소