: 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동을 말한다.
| 3대 요소 | 설명 |
| 기밀성(Confidentiality) | 인가되지 않는 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성 인가된 사용자에 대해서만 자원 접근이 가능해야 하는 특성 |
| 무결성(Integrity) | 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성 인가된 사용자에 대해서만 자원 수정이 가능하며 전송 중인 정보는 수정되지 않아야 하는 특성 |
| 가용성(Availability) | 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능해야 하는 특성 |
| 용어 | 설명 |
| 자산(Assets) | 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상 |
| 위협(Threat) | 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위 |
| 취약점(Vulnerability) | 위협이 발생하기 위한 사전 조건으로 시스템의 정보 보증을 낮추는 데 사용되는 약점 |
| 위험(Risk) | 위협이 취약점을 이용하여 조직의 자산 손질 피해를 가져올 가능성 |
: 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격이다
: 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스를 이용하지 못하게 하거나, 서버의 TCP 연결을 소진시키는 등의 공격이다
: DoS 공격은 1대의 공격자 컴퓨터에서 타깃 시스템에 악성 패킷을 보내는 방식으로 공격하고, 타깃 시스템 측에서 공격자의 주소를 확인하고 차단하면 더 이상 공격을 하지 못하는 단점이 있다. DoS 공격에서 진화된 DDoS 공격은 완벽한 공격을 위해 공격자가 여러 대의 컴퓨터를 감염시키고, 분산된 좀비 PC들을 이용해 타깃 시스템을 집중적으로 공격해서 서비스를 마비시키는 차이점이 있다.
| 공격기법 | 설명 |
| SYN 플러딩(SYN Flooding) | TCP 프로토콜의 구조적인 문제를 이용한 공격 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격 - 공격자는 ACK를 발송하지 않으므로써 계속 새로운 서버 접속 요청을 하게 되어 서버 자원할당을 해제하지 않고 자원을 계속 소비하여 고갈됨 |
| UDP 플러딩(UDP Flooding) | 대량의 UDP 패킷을 만들어 임의의 포트 번호를 전송하여 응답 메시지(ICMP Destination Unreachable)를 생성하게 하여 지속해서 자원을 고갈시키는 공격 ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기함 |
| 스머프(Smurf)/스머핑(Smurfing) | 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격 바운스(Bounce) 사이트라고 불리는 제3의 사이트를 이용해 공격 |
| 죽음의 핑(PoD; Ping of Death | ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP 단편화가 발생하고, 수신 측에서는 단편화된 패킷을 처리(재조합)하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격기법 |
| 랜드 어택(Land Attack) | 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 |
| 티어 드롭(Tear Drop) | IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 DoS 공격 공격자는 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격방식 |
| 봉크(Bonk) | 패킷을 분할하여 보낼 때 처음 패킷을 1번으로 보낸 후 다음 패킷을 보낼 때도 순서번호를 모두 1번으로 조작하여 전송하는 DoS공격 똑같은 번호로 전성돼서 오류를 일으킴 |
| 보잉크(Boink) | 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으키게 하는 공격 기법 |
DDoS(Distributed Dos) 공격
: DoS의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법이다
DDoS 공격 구성요소
| 구성요소 | 설명 |
| 핸들러(Handler) | 마스터 시스템의 역할을 수행하는 프로그램 |
| 에이전트(Agent) | 공격 대상에 직접 공격을 가하는 시스템 |
| 마스터(Master) | 공격자에게서 직접 명령을 받는 시스템 여러 대의 에이전트를 관리하는 역할 |
| 공격자(Attacker) | 공격을 주도하는 해커의 컴퓨터 |
| 데몬 프로그램(Daemon) | 에이전트 시스템의 역할을 수행하는 프로그램 |
DDoS 공격 도구
| 공격 도구 | 설명 |
| Trinoo | 많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는 데 사용되는 도구 Trinoo 공격은 몇 개의 서버들과 많은 수의 클라이언트들로 이루어짐 |
| Tribe Flood Network | TFN은 trinoo와 거의 유사한 분산 도구로 많은 소스에서 하나 혹은 여러 개의 목표 시스템에 대해 서비스 거부 공격을 수행하는 도구 TFN 서비스 거부 공격은 공격자가 클라이언트 프로그램을 통해 공격 명령을 일련의 TFN 서버들로 이루어짐 UDP flood 공격뿐만 아니라 TCP SYN flood 공격, ICMP echo 요청 공격, ICMP 프로드캐스트 공격 수행 가능 |
| Stacheldraht | 분산 서비스 거부 에이전트 역할을 하는 Linux 및 Solaris 시스템용 맬웨어 도구 |
DDoS 공격 대응 방안
| 대응 방법 | 설명 |
| 차단 정책 업데이트 | 공격 규모를 확인하여 가용성이 침해될 수 있는 지점을 확인 및 데이터 기반 차단 정책 업데이트 |
| 좀비PC IP 확보 | 공격자는 대부분 Source IP를 위조하므로 IP 위변조 여부를 확인하는 절차 필요 |
| 보안 솔루션 운영 | 방화벽, 침입 탐지 시스템 등의 보안 솔루션 운영 |
| 홈페이지 보안 관리 | 홈페이지에 대한 모의해킹 등을 수행하여 보안 유지 |
| 시스템 패치 | 시스템에 존재하는 취약점을 패치를 통해 해결 |
DDoS 공격의 종류
| 구분 | 종류 | 상세 공격 유형 |
| 대역폭 소진 공격 (3~4계층) |
UDP/ICMP Traffic Flooding | UDP/ICMP Flooding DNS Query Flooding |
| TCP Traffic Flooding | SYN Flooding SYN+ACK Flooding |
|
| IP Flooding | LAND Attack Teardrop |
|
| 서비스(애플리케이션) 마비 공격 (7계층) |
HTTP Traffic Flooding | GET Flooding GET with Cache-Control |
| HTTP Header/Option Spoofing | Slowris Slowloris Slow Read Attack |
|
| Other L7 Servise Flooding | Hash Dos Hulk Dos FTP/SMTP Attack |
DRDoS(Distributed Reflection DoS) 공격
: 공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부(DoS)가 되는 공격
DDoS와 DRDoS의 차이점
: DRDoS는 DDoS에 비해 공격 근원지 파악이 어렵고, 공격 트래픽 생성 효율이 DDoS보다 훨씬 크다
DRDoS 공격 절차
| 순서 | 공격 절차 | 설명 |
| 1 | 출발지 IP 변조 | 공격자는 출발지 IP를 공격 대상자 IP로 Spoofing하여 SYN 패킷을 공격 경유지 서버로 전송 |
| 2 | 공격 대상자 서버로 응답 | SYN 패킷을 받은 경유지 서버는 Spoofing 된 IP로 SYN/ACK을 전송 |
| 3 | 서비스 거부 | 공격 대상자 서버는 수많은 SYN/ACK를 받게 디어 서비스 거부가 됨 |
DRDoS 대응 방안
: ISP(인터넷 서비스 사업자)가 직접 차단한다
: 반사 서버에서 연결을 완료하지 않는 SYN 출처 IP를 주사하여 블랙리스트로 운영, 공격 서버를 사전에 차단한다
: 공격 대상이 되고 있는 공격대상 서버 IP와 Port(서비스)를 변경, 필터링하여 운영한다
세션 하이재킹(Session Hijacking)
: 케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격기법이다
세션 하이재킹의 특징
: TCP Sequence Number의 보안상 취약점으로 발생한다
: Victim과 Server 사이의 패킷을 스니핑하여 Sequence Number를 획득하고, 공격자는 데이터 전송 중인 Victim과 Server 사이를 비동기화 상태로 강제적으로 만들고, 스니핑 하여 획득한 Client Sequence Number를 이용하여 공격하는 방식이다
: 비동기화 상태로 패킷이 유실되어 재전송 패킷이 증가한다
: 세션 하이재킹을 통해 ACK Storm 증가, 네트워크 부하 증가 현상이 발생한다
세션 하이재킹 탐지방법
: 비동기화 상태감지
: ACK 패킷 비율 모니터링
: 특정 세션에서 패킷 유실 및 재전송이 증가되는 것을 탐지
: 기대하지 않은 접속의 리셋 탐지
애플리케이션 공격
| 공격기법 | 설명 |
| HTTP GET Flooding | Cache Control Attack 공격 과도한 Get 메시지를 이용하여 웹 서버의 과부하를 유발시키는 공격 |
| Slowloris(Slow HTTP Header DoS) | HTTP GET 메서드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열인 ₩r₩n₩r₩n(Hex: Od Oa Od Oa)을 전송하지 않고, ₩r₩n만 전송하여 대상 웹 서버와 연결상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격 |
| RUDY Attack(Slow HTTP POST DoS) | 요청 헤더의 Content-Length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결상태를 유지 |
| Slow Read Attack | TCP 원도 크기를 낮게 설정하여 서버로 전달하고, 해당 윈도 크기를 기준으로 통신하면서 데이터 전송이 완료될 때까지 연결을 유지하게 만들어 서버의 연결 자원을 고갈시키는 공격 |
| Hulk DoS | 공격자가 공격대상 웹 사이트 페이지 주소를 지속적으로 변경하면서 다량으로 GET 요청을 발생시키는 서비스 공격 거부 |
네트워크 공격
| 공격기법 | 설명 |
| 스니핑(Sniffing) | 공격대상에게 직접 공격하지 않고 데이터만 몰래 들여다보는 수동적인 공격 기법 |
| 네트워크 스캐너(Scanner), 스니퍼(Sniffer) | 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐구하는 공격 도구 |
| 패스워드 크래킹(Passward Cracking) | - 사전(Dictionary) 크래킹 : 서비스 또는 서비스의 ID와 패스워드를 크랙하기 위해서 ID와 패스워드가 될 가능성이 있는 단어를 파일로 만들어 놓고 이 파일의 단어를 대입하여 크랙하는 공격기법 - 무차별(Brute Force) 크래킹 : 패스워드로 사용될 수 있는 영문자, 숫자, 특수문자 등을 무작위로 패스워드 자리에 대입하여 패스워드를 알아내는 공격기법 - 패스워크 하이브리드 공격(Password Hybrid Attack) : 사전 공격과 무차별 대입공격을 결합하여 공격하는 기법 - 레인보우 테이블 공격(Rainbow Table Attack) : 패스워크 별로 해시 값을 미리 생성해서 테이블에 모아 놓고, 크래킹 하고자 하는 해시 값을 테이블에서 검색해서 역으로 패스워드를 찾는 공격기법 |
| IP 스푸핑 | 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 타깃 시스템의 정보를 빼내기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP 어드레스로 위조하여 타깃에 전송하는 공격기법 |
| ARP 스푸핑 | 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경, 희생자부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격기법 |
| ICMP Redirect 공격 | 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격기법 |
| 트로이 목마(Trojan Horses) | 악성 루틴이 숨어 있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그램 |
버퍼 오버플로우(Buffer Overflow) 공격
: 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 이로 인해 프로세스의 흐름을 변경시켜서 악성 코드를 실행시키는 공격기법이다
버퍼 오버플로우 공격 유형
| 유형 | 설명 |
| 스택 버퍼 오버플로우 (Stack Buffer Overflow) |
스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 복귀 주소를 변경하고 공격자가 원하는 임의의 코드를 실행하는 공격기법 |
| 힙 버퍼 오버플로우 (Heap Buffer Overflow) |
프로그램 실행 시 동적으로 할당되는 힙 영역에 할당된 버퍼 크기를 초과하는 데이터를 입력하여 메모리의 데이터와 함수 주소 등을 변경, 공격자가 원하는 임의의 코드를 실행하는 공격기법 |
버퍼 오버플로우 공격 대응 방안
| 대응 방안 | 설명 |
| 스택가드(Stackguard) 활용 | 카나리라고 불리는 무결성 체크용 값을 복귀 주소와 변수 사이에 삽입해 두고, 버퍼 오버플로우 발생 시 카나리 값을 체크, 변할 경우 복귀 주소를 호출하지 않는 방식으로 대응 |
| 스택쉴드 | 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장해 두고, 함수 종료 시 저장된 값과 스택의 RET 값을 비교해서 다를 경우 오버플로우로 간주하고 프로그램 실행 중단 |
| ASLR(Address Space Layout Randomization) | 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하고, 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로우를 토한 특정 주소 호출을 차단 |
| 안전한 함수 활용 | 버퍼 오버플로우에 취약함 함수 : strcat(), strcpy(), gets(), scanf(), sscanfO, vscanf(), vsscanf(), sprintf(), vsprintf() 버퍼 오버플로우에 안전한 함수 : strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf() |
백도어(Backdoor)
: 어떤 제품이나 컴퓨터 시스템, 암호시스템 혹은 알고리즘에서 정상적인 인증 절차를 우회하는 기법
| 탐지 기법 | 설명 |
| 프로세스 및 열린 포트 확인 | |
| Setuid 파일 검사 | 새로 생성된 Setuid 파일이나 변경된 파일 확인을 통해 백도어 탐지 |
| 백신 및 백도어 탐지 툴 활용 | 백신 프로그램 및 백도어 탐지 툴을 이용해서 의심 프로그램 및 백도어 유무 검출 |
| 무결성 검사 | |
| 로그 분석 |
주요 시스템 보안 공격 기법
| 공격 기법 | 설명 |
| 포맷 스트링 공격 | 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격으로 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그래도 사용하는 경우 발생하는 취약점 공격기법 |
| 레이스 컨디션 공격 | 레이스 컨디션은 둘 이상의 프로세스나 스레드가 공유자원을 동시 접근할 때 접근 순서에 따라 비정상적인 결과가 발생하는 조건/상황 레이스 컨디션 공격은 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을 심볼릭 링크하여 악의적인 행위를 수행하게 하는 공격기법 |
| 키로커 공격(Key Logger Attack) | 키보드 활동을 기록하는 것을 키로킹 또는 키스트로크 로깅이라 함 |
| 루트킷(Rootkit) | 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이 목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능을 제공하는 프로그램 모음 |
보안 관련 용어
| 용어 | 설명 |
| 스피어피싱(Spear Phishing) | 사회 공학의 한 기법으로, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도하여 사용자의 개인정보를 탈취하는 공격기법 |
| 스미싱(Smishing) | 문자메시지를 이용하여 신뢰할 수 있는 사람 또는 기업이 보낸 것처럼 가장하여 개인 비밀번호를 요구하거나 휴대폰 소액 결제를 유도하는 피싱공격 |
| 큐싱(QShing) | 큐알 코드와 피싱의 합성어 |
| 봇넷(Botnet) | 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 상태 |
| APT 공격(Advenced Persistent Threat) | 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격기법 |
| 공급망 공격(Supply Chain Attack) | 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입하거나 배포 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 사용자 PC에 소프트웨어를 설치 또는 업데이트 시에 자동적으로 감염되도록 하는 공격기법 |
| 제로데이 공격(Zero Day Attack) | 보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하여 이루어지는 보안 공격기법 |
| 웜(Worm) | 스스로를 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램 |
| 악성 봇(Mailcious Bot) | 스스로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 혹은 코드 |
| 사이버 킬체인(Cyber Kill Chain) | 공격형 방위시스템으로 지능적, 지속적 사이버 공격에 대해 7단계 프로세스별 공격분석 및 대응을 체계화한 APT 공격 방어 분석 모델 |
| 랜섬웨어(Ransomware) | 악성 코드의 한 종류로 감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록 하고, 피해자로 하여금 암호화된 파일을 인질처럼 잡고 몸값을 요구 악성 소프트웨어 |
| 이블 트윈(Evil Twin) 공격 | 무선 Wifi 피싱 기법 |
| 사회공학(Social Engineering) | 사람들의 심리와 행동 양식을 교모하게 이용해서 원하는 정보를 얻는 공격 기법 |
| 트러스트존(Trustzone) | 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 보안 기술로 프로세스 안에서 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술 |
| 타이포스쿼팅(Typosquatting) | 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하게 위해 이와 유사한 유명 도메인을 미리 등록하는 일로, URL 하이재킹이라고도 부름 |
서버 인증
: 다중 사용자 시스템과 망 운영 시스템에서 접속자의 로그인 정보를 확인하는 정보 절차이다
서버 인증 기능
| 기능 | 설명 |
| 스니핑 방지 | SSL 인증서를 설치하면 정보가 유출되더라도 모든 정보가 암호화되어 안전함 |
| 피싱 방지 | 인증을 받지 않으면 유사사이트에 대해서 SSL 인증서를 발급받을 수 없음 |
| 데이터 변조 방지 | 제 3자의 악의적인 개입으로 인하여 데이터 값의 변조될 가능성 존재 악의적인 데이터의 변조를 SSL 보안 서버 구축을 통해서 원천봉쇄 |
| 기업 신뢰도 향상 | 정식으로 기업 인증을 받고 인증마크를 설치함으로써 기업 자체에 대한 신뢰성 향상 |
인증 기술의 유형
- 지식기반 인증
- 소지기반 인증
- 생체기반 인증
- 특징(행위)기반 인증
서버 접근 통제
: 사람 또는 프로세스가 서버 내 파일에 읽기, 쓰기, 실행 등의 접근 여부를 허가하거나 거부하는 기능이다
서버 접근 통제 목적
: 비인가자로부터 객체의 기밀성, 무결성, 가용성을 보장한다
접근 통제 용어
| 구분 | 설명 |
| 주체(Subject) | 객체나 객체 내의 데이터에 대한 접근을 요청하는 능동적인 개체 (행위자) |
| 객체(Object) | 접근 대상이 수동적인 개체 혹은 행위가 일어나게 하는 아이템(제공자) |
| 접근(Access) | 읽고, 만들고, 삭제하거나 수정하는 등의 행위를 하는 주체의 활동 |
서버 접근 통제 유형
| 유형 | 설명 |
| 임의적 접근 통제 (DAC; Discretionary Access Control) |
주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법 |
| 강제적 접근 통제 (MAC; Mandatory Access Control) |
객체에 포함된 정보의 허용등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법 규칙 기반 접근 통제 정책 |
| 역할 기반 접근 통제 (RBAC; Role Based Access Control) |
중앙 관리자가 사용자와 시스템의 상호관계를 통제하여 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법 |
3A
: 유무선 이동 및 인터넷 환경에서 가입자에 대한 안전하고, 신뢰성 있는 인증, 권한 부여, 계정 관리를 체계적으로 제공하는 정보 보호 기술이다
| 구성 | 설명 |
| 인증(Authentication) | 접근을 시도하는 가입자 또는 단말에 대한 식별 및 신분을 검증 주체의 신원을 검증하기 위한 활동 |
| 권한 부여(Authorization) | 검증된 가입자나 단말에게 어떤 수준의 권한과 서비스를 허용 인증된 주체에게 접근을 허용하는 활동 |
| 계정 관리(Accounting) | 리소스 사용에 대한 정보를 수집하고 관리하는 서비스 주체의 접근을 추적하고 행동을 기록하는 활동 |
인증 관련 기술
| 구분 | 설명 |
| SSO(Single Sign On) | 커버로스에서 사용되는 기술로 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있게 해주는 인증 기술 |
| 커버로스(Kerberos) | 클라이언트/서버 모델에서 동작하고 대칭 키 암호기법에 바탕을 둔 티켓 기반의 프로토콜 |
벨-라파듈라 모델(BLP; Bell-Lapadula Policy)
: 미 국방부 지원 보안 모델로 보안 요소 중 기밀성을 강조하며 강제적 정책에 의해 접근 통제하는 모델이다
벨-라파듈라 모델 속성
| 속성 | 설명 |
| No Read Up | 보안수준이 낮은 주체는 보안 수준이 높은 객체를 읽어서는 안됨 |
| No Write Down | 보안수준이 높은 주체는 보안 수준이 낮은 객체에 기록하면 안됨 |
암호 알고리즘(Encryption Algorithm)
: 암호 알고리즘은 데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법이다
암호 알고리즘 관련 주요 용어
| 용어 | 설명 |
| 평문(Plain / Plaintext) | |
| 암호문(Cipher / Ciphertext) | |
| 암호화(Encrypt / Encryption / Encoding) | |
| 복호화(Decrypt / Decryption / Decoding) | |
| 키(Key) | |
| 치환암호 (대치 암호, Substitution Cipher) | 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체하는 방법 |
| 전치 암호(Transposition Cipher) | 비트, 문자 또는 블록이 원래 의미를 감추도록 자리바꿈 등을 이용하여 재배열하는 방법 |
대칭 키 암호 방식
: 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘이다
: 대칭 키 암호 방식은 비밀키 전달을 위한 키 교환이 필요하고, 암호화 및 복호화의 속도가 빠르다
: 대칭 키는 블록 암호화와 스트림 암호화 알고리즘으로 나뉜다
| 방식 | 설명 |
| 블록 암호 방식 | 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법 DES, AES, SEED |
| 스트림 암호 방식 | 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식 RC4 |
비대칭 키 암호 방식(=공개키 암호 방식)
: 사전에 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식이다
: 공개 키와 개인 키가 존재하며, 공개키는 누구나 알 수 있지만, 그에 대응하는 개인키는 키의 소유자만이 알 수 있어야 한다.
: 공개키로 암호화된 메시지는 반드시 개인 키로 복호화해야 한다
: 비대칭 키 암호 방식에는 RAS, ECC, ELGamal, 디피-헬만 등이 있다
: 비대칭 키 암호 방식은 자신만이 보관하는 비밀키를 이용하여 인증, 전자서명 등에 적용이 가능하다
암호 알고리즘 비교
| 구분 | 대칭 키 암호 방식 | 비대칭 키 암호 방식 |
| 키 | 대칭 키(비밀키) | 비대칭키(공개키, 사설 키) |
| 키의 관계 | 암호화 키 = 복호화 키 | 암호화 키 != 복호화 키 |
| 키 개수 | n(n-1) / 2 | 2n |
| 암호 알고리즘 | 공개 | 공개 |
| 장점 | 계산 속도가 빠름 | 암호화 키 사전 공유 불필요 관리해야 할 키 개수가 적음 |
| 단점 | 키 분배 및 관리의 어려움 기밀성만 보장 |
계산 속도 느림 |
| 알고리즘 | DES, AES, SEED | 디피-헬만, RSA |
일방향 암호 방식(해시 암호 방식)
: 임의 길이의 정보를 입력받아, 고정된 길이의 암호문을 출력하는 암호 방식이다
: 해시 암호화 알고리즘이 적용된 정보는 복호화가 불가능하다
| 방식 | 설명 |
| MAC(Message Authentication) | 키를 사용하는 메시지 인증 코드로 메시지의 정당성을 검증하기 위해 메시지와 함께 전송되는 값 메시지의 무결성과 송신자의 인증을 보장함 |
| MDC(Modification Detection Code) | 키를 사용하지 않는 변경 감지 코드로 수신자는 받은 데이터로부터 새로운 MDC를 생성하여 송신자에게 받은 DMC와 비교하여 해당 메시지가 변경되지 않았음을 보장하는 값 메시지의 무결성 보장 |
대칭 키 암호화 알고리즘
| 종류 | 설명 |
| DES (Data Encryption Standard) |
1975년 IBM에서 개발하고 미국의 연방 표준국에서 발표한 대칭 키 기반 블록 암호화 알고리즘 블록 크기 64bit, 키 길이 56bit인 페이스텔 구조, 16라운드 암호화 알고리즘 |
| SEED | 1999년 국내 한국인터넷진흥원이 개발한 블록 암호화 알고리즘 128bit 비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128bit 평문 블록을 128bit 암호문 블록으로 암호화하여 출력하는 방식 블록 크기는 128bit이며, 키 길이에 따라 128bit, 256bit로 구분 |
| AES (Advanced Encryption Standard) |
미국 표준 기술 연구소(NIST)에서 발표한 블록 암호화 알고리즘
DES의 개인 키에 대한 전사적 공격이 가능해지고, DES의 성능문제를 극복하기 위해 개발 블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit, 256bit로 분류 AES의 라운드 수는 10, 12, 14라운드로 분류 |
| ARIA (Academy Research institute Agency) |
2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘
ARIA는 학계(Academy), 연구기관(Research Institute), 정부(Agency)의 영문 앞글자로 구성 블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit, 256bit로 분류 ARIA는 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발되었으며, ARIA가 사용하는 대부분의 연산은 XOR과 같은 단순한 바이트 단위 연산으로 구성 |
| IDEA (International Data Encryption Algorithm) |
DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘
128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦 |
| LFSR (Linear Feedback Shift Register) |
시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
LFSR에서 사용되는 선형 함수는 주로 배타적 논리합(XOR)이고, LFSR의 초기 비트 값은 시드(Seed)라고 함 |
| Skipjack |
미 국가안보국(NSA; National Security Agency)에서 개발한 Clipper 칩에 내장된 블록 알고리즘
소프트웨어로 구현되는 것을 막고자 Fortezza Card에 칩 형태로 구현됨 전화기와 같이 음성을 암호화하는 데 주로 사용되고 64비트의 입 ・ 출력, 80비 트의 키, 32라운드를 가짐 |
비대칭 키 암호화 알고리즘
| 종류 | 설명 |
| 디피-헬만 (Diffie-Helllman) |
최초의 공개키 알고리즘으로 W.Diffie와 M.HellmanO| 1976년에 고안한 알고리즘으로서 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본 원리로 하 고 있음
|
| RAS (Rivest-shamir-Adleman) |
비밀키의 복호화가 어려운 RSA 안전성은 소인수분해 문제의 어려움에 근거 를 두고 있음
|
| ECC (Elliptic Curve Crytography) |
PKI 기반의 PSA의 문제점인 속도와 안전성 해결하기 위해 타원 기반 구조체의 안정성과 효율성을 기반으로 생성되었고, RSA보다 키의 비트 수를 적게 하면서 동일한 성능을 제공하는 것이 가장 큰 특징임 |
| EIGamal |
이산대수의 계산이 어려운 문제를 기본 원리로 하고 있으며, RSA와 유사하게 전자서명과 데이터 암 ・ 복호화에 함께 사용 가능
|
해시 암호화 알고리즘
| 종류 | 설명 |
| MD5 (Message-Digest Algorithm 5) |
MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용 |
| SHA-1 (Secure Hash Alogorithm) |
NSA에서 미 정부 표준 지정 DAS(Digital Signature Algorithm)에서 사용 160비트의 해시값을 생성하는 해시 알고리즘 |
| SHA-256/384/512 (Secure Hash Algorithm) |
SHA(Secure Hash Algorithm) 알고리즘 한 종류 256비트의 해시값을 생성하는 해시함수 AES(Advanced Encryption Standard, 미연방 표준 알고리즘)의 키 길이인 128, 192, 256비트에 대응하도록 출력 길이를 늘린 해시 알고리즘 |
| HAS-160 | 국내 표준 서명 알고리즘을 KCDSA을 위하여 개발된 해시함수 |
| HAVAL | 메시지를 1024bit 블록으로 나누고 128, 160, 192, 256 비트인 메시지 다이제스트를 출력하는 해시 알고리즘 |
IPSec(Internet Protocol Security)
: IP 계층(3계층)에서 무결성과 인증을 보장하는 인증헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜이다
IPSec의 기능
| 기능 | 설명 |
| 기밀성 | 대칭 암호화를 통해 전송 데이터에 대한 기밀성 제공 |
| 비 연결형 무결성 | 메시지가 위, 변조되지 않았음을 보장하는 특성 제공 |
| 인증 | 데이터 원천 인증 및 송신처 인증 |
| 재전송 공격 방지 | 송신 측에서 IP 패킷별로 순서번호를 통해 재전송 공격 방지 |
| 접근 제어 | Security Policy를 통해 시스템 접근 제어 |
| 동작 모드 | 설명 |
| 전송 모드(Transport Mode) | IP 패킷의 페이로드를 보호하는 모드 즉 IP 상위 프로토콜 데이터를 보호하는 모드 |
| 터널 모드(Tunnel Mode) | IP 패킷 전체를 보호하는 모드 IP 패킷 전체를 IPSec으로 캡슐화하여 IP 헤더를 식별할 수 없기 때문에 네트워크상 패킷 전송이 불가능 따라서 전송구간 주소 정보를 담은 New IP 헤더 주가 |
IPSec 프로토콜
| 프로토콜 | 설명 |
| 인증(AH) 프로토콜 (Authentication Header) |
메시지 인증 코드(MAC)를 이용하여 인증과 송신처 인증을 제공해주는 프로토콜로 기밀성은 제공하지 않는 프로토콜 |
| 암호화(ESP) 프로토콜 (Encapsulation Security Payload) |
메시지 인증 코드(MAC)와 암호화를 이용하여 송신처 인증과 기밀성을 제공해주는 프로토콜 기밀성, 무결성, 인증 제공 |
| 키 관리(IKE) 프로토콜 (Internet Key Exchange) |
Key를 주고 받는 알고리즘 공개된 네트워크를 통하여 Key를 어떻게 할 것인가를 정의, IKE 교환을 위한 메시지를 전달하는 프로토콜 |
SSL(Secure Socket Layer)/TLS(Transport Layer Security)
: 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜이다.
SSL/TLS 보안 기능
| 특징 | 설명 |
| Netscape 사가 개발 | 웹 보안을 위해서 처음 개발 |
| 다양한 암호 통신 방법 활용 | 대칭 키 암호화, 공개키 암호화, 일방향 해시함수, 메시지 인증코드, 의사난수 생성기, 전자서명을 조합하여 암호화 통신 수행 |
| 특정 암호기술에 의존하지 않음 | 암호 도구 목록을 변경하여 강력한 알고리즘 사용 SSL/TLS상에 HTTP를 올려서 'https://"로 변경되어 사용 |
S-HTTP(Secure Hpyertext Transfer Protocol)
: 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간의 전송되는 모든 메시지를 각각 암호화하여 전송하는 기술이다
정보자산 주요 용어
| 용어 | 설명 |
| 자산 | 조직에서 보유한 가치 있는 모든 것 |
| 사용자 | 정보처리 기기 및 시스템을 활용해 자산을 사용하는 사람과 기관 |
| 소유자 | 자산의 소유 권한 및 관리에 대한 최종 책임자 |
| 관리자 | 자산의 소유자로부터 관리위임을 받은 자 자산의 보관 및 운영 책임을 짐 |
정보자산의 분류기준
- 소프트웨어
- 하드웨어
- 데이터
- 문서
- 시설
- 지원설비
- 인력
SW 개발 보안 적용 사례
Secure SDLC 모델 및 방법론
| 구분 | 설명 |
| BSIMM (Building Security In Maturity Model) |
미국 국토안보국의 지원을 받아 수행된 소프트웨어 보증 프로젝트의 결과물 중 하나 보안 활동의 성숙도 수준을 영역별로 측정함으로써 소프트웨어 개발에 필요한 보안 능력 향상을 목표로 하는 개발 프레임워크 |
| Open SAMM (Software Assurance Maturity Model) |
개방을 원칙으로 소규모, 중규모, 대규모로 점진적인 확대가 가능한 융통성 있는 프레임워크 BSIMM과 달리 설계 리뷰와 코드 리뷰, 보안 테스팅을 3개의 중요한 검증 활동으로 정의함으로써 이들 활동 간의 연계성 강조 |
| Seven TouchPoints | 실무적으로 검증된 개발 보안 방법론 중 하나로써 SW 보안의 모범 사례를 SDLC에 통합한 소프트웨어 개발 보안 생명 주기 방법론 |
| MS SDL (Security Development Lifecycle) |
자사의 소프트웨어 개발에 의무적으로 적용하도록 고안한 보안 강화 프레임워크 |
| OWASP CLASP = CLASP (The Open Web Application Security Project) |
프로그램 설계나 코딩 오류를 찾아내어 개선하기 위해 개발팀에 취약점 목록을 제공 |
시큐어 코딩 가이드
: 설계 및 구현 단계에서 해킹 등 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법이다
시큐어 코딩 가이드
| 보안 약점 | 내용 | 대응방안 |
| 입력 데이터 검증 및 표현 | 프로그램 입력값에 대한 검증 누락, 부 적절한 검증, 잘못된 형식 지정 | 사용자, 프로그램 입력데이터에 대한 유효성 검증 체계를 수립하고 실패 시 처리 설게 및 구현 |
| 보안 기능 | 보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)의 부적절한 구현 | 인증, 접근 통제, 권한 관리, 비밀번호 등의 정책이 적절하게 반영되도록 설계 및 구현 |
| 시간 및 상태 | 거의 동시에 수행 지원하는 병렬 시스템 또는 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리 | 공유 자원 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀함수 호출 |
| 에러 처리 | 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요정보가 포함 | 에러 또는 오류 상황을 처리하지 않거나, 불충분하게 처리되어 중요정보 유출 등 보안 약점이 발생하지 않도록 시스템 설계 및 구현 |
| 코드 오류 | 개발자가 범할 수 있는 코딩 오류로 인해 유발 | 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위의 최상향 조정 후 경고 메시지 코드 제거 |
| 캡슐화 | 가능성이 불충분한 캡슐화로 인해 인가 되지 않는 사용자에게 데이터 누출 | 디버그 코드 제거와 필수 정보 외의 클래스 내 프라이빗 접근자 지정 |
| API 오용 | 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API의 사용 | 개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용 |
입력 데이터 검증 및 표현
: 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단게에서 검증해야 하는 보안 점검 항목들이다
: 입력 데이터로 인해 발생하는 문제를 예방하기 위해서는 소프트웨어 개발 구현 단계게서 유효성 검증 체계를 갖추고, 검증되지 않는 데이터 입력을 처리할 수 있도록 구현해야 한다
입력 데이터 검증 및 표현 취약점
| 취약점 | 설명 | 대책 |
| XSS (Cross Site Scripting) |
검증되지 않는 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격 | - 특수문자 등록을 방지하기 위해 특수 문자 필터링 - HTML 태그 사용 금지 - 자바스크립트로 시작하는 문자열은 모두 문자열 변환 처리 |
| 사이트 간 요청 위조 (CSRF; Cross Site Request Forgery) |
사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 | - 입력화면 폼을 작성 시 GET 방식보다 POST 방식 사용 - 입력 폼과 입력처리 프로그램에서 세션별 CSRF 토큰을 사용하여 점검 - 중요기능의 경우 재인증을 통해 안전하게 실제 요청 여부를 확인하도록 구현 |
| SQL 삽입 (Injection) |
응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜 데이터베이스 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격 기법 | - 바이딩 매개변수 방식 적용하여 사전에 변수 타입을 명시적으로 지정 - 사용자로부터 입력될 수 있는 모든 값을 체크하여 필터링 - Servlet Filter 기능 적용(Java에서만 적용) |
XSS 공격 유형
| 공격 유형 | 설명 |
| Stored XSS | 방문자들이 악성 스크립트가 포함된 페이지를 읽어 봄과 동시에 악성 스크립트가 브라우저에서 실행되면서 감염되는 기법 |
| Reflected XSS | 공격용 악성 URL을 생성한 후 이메일로 사용자에게 전송하면 사용자가 URL 클릭 시 즉시 공격 스크립트가 피해자로 반사되어 접속 페이지에 민감정보를 공격자에게 전송하는 기법 |
| DOM(Document Object Model XSS) | 공격자는 DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을 이메일을 통해 발송하고 피해자가 URL 클릭 시 공격 피해를 당하는 기법 |
XSS 공격 방식
| 번호 | 공격 절차 |
| 1 | 임의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작성하여 삽입 저장 |
| 2 | 해당 웹 서비스 사용자가 공격자가 작성해 놓은 XSS 코드에 접근 |
| 3 | 사용자가 XSS 코드가 저장된 페이지에 정보를 요청 |
| 4 | 사용자의 시스템에서 XSS 코드 실행 |
| 5 | XSS 코드가 실행된 결과가 공격자에게 전달되고 공격자는 결과를 가지고 웹 서버에서 2차 해킹 시도 |
SQL 삽입(SQL Injection)
| 공격 유형 | 설명 |
| Form SQL Injection | HTML Form 기반 인증을 담당하는 애플리케이션의 취약점이 있는 경우 사용자 인증을 위한 쿼리 문의 조건을 임의로 조작해서 인증을 우회하는 기법 |
| Union SQL Injection | 쿼리의 UNION 연산자를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법 |
| Stored Procedure SQL Injection | 저장 프로시저를 이용하여 공격하는 기법 |
| Mass SQL Injection | 기존 SQL Injection의 확장된 개념으로 한 번의 공격으로 대량의 DB 값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격기법 |
| Error-Based SQl Injection | DB 쿼리에 대한 에러값을 기반으로 한 단계씩 점진적으로 DB 정보를 획득할 수 있는 공격 기법 |
| Blind SQL Injection | DB 쿼리에 대한 오류 메시지를 반환하지 않으면 공격을 할수 없는 Error-Based SQL Injection과 달리 오류 메시지가 아닌 쿼리 결과의 참과 거짓을 통해 의도하지 않는 SQL 문을 실행함으로써 데이터베이스를 비정상적으로 공격하는 기법 |
SQL 삽입 공격 절차
| 순서 | 공격 절차 |
| 1 | 응용 프로그램 취약점 탐지 |
| 2 | 악의적인 SQL 구문 삽입하여 인증 우회 |
| 3 | 권한이 상승되어 DB의 정보 탈취 및 조작 실행 |
XSS는 악성코드가 클라이언트 PC에서 실행되어 클라이언트 PC 정보를 공격자에게 탈취는 공격방식이고, CSRF는 공격자의 악의적인 요청이 클라이언트로 하여금 희생자 서버에서 실행되게 되는 공격이다
XSS는 사용자만 피해를 입고, CSRF는 웹서버, 사용자 모두 피해를 입는다
보안 기능
: 소프트웨어 개발 단계에서 인증, 접근제어, 기밀성, 암호화, 권한 관리 등을 적절하게 구현하기 위한 보안 점검 항목들이다
보안 기능 취약점
: 보안 기능에 대한 점검을 수행하여 적절한 인증 없이 중요기능 허용, 부적절한 인가, 취약한 암호화 알고리즘 사용, 중요정보의 평문 저장 및 전송, 하드 코드 된 비밀번호 등의 보안 취약점을 방지해야 한다
| 취약점 | 설명 | 대책 |
| 적절한 인증 없이 중요 기능 허용 | 보안 검사를 우회하여 인증과정 없이 중요정보 또는 기능에 접근 및 변경이 가능 | 중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 통해 방지 |
| 부적절한 인가 | 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한 탈취 | 모든 실행경로에 대해 접근제어 검사를 수행하고, 사용자에게는 반드시 필요한 접근권만 부여하여 방지 |
| 취약한 암호화 알고리즘 사용 | 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보 탈취 | 안전한 암호화 알고리즘, 안정성이 인증된 암호 모듈을 이용하여 방지 |
| 중요 저장 평문 저장 및 전송 | 암호화되지 않은 평문 데이터를 탈취하여 중요 정보 획득 가능 | 중요한 정보 저장 및 전송 시 반드시 암호화 과정을 거치도록 하고, HTTPS, SSL/TLS 등의 보안 채널을 이용하여 방지 |
| 하드 코딩 된 비밀번호 | 프로그램 코드 내부에 패스워드 포함 시 관리자 정보가 노출될 수 있는 보안 취약점 | - 패스워드는 암호화하여 별도 파일에 저장 - 소프트웨어 설치 시 직접 패스워드나 키를 입력하도록 설계하여 방지 |
| 취약한 패스워드 요구 조건 | 취약한 사용자 패스워드 조합 규칙에 따른 사용자 계정 보안 취약점 | 패스워드 생성 시 강한 조건 검증 필요 |
에러 처리
: 프로그램 실행 시 발생하는 에러를 예외 처리하지 못하거나, 에러 정보에 중요한 정보가 포함될 때 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들이다
에러 처리 취약점
| 취약점 | 설명 | 대책 |
| 오류 메시지 통한 정보 노출 | 프로그램이 실행환경, 사용자, 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 공격자의 악성 행위를 도와주는 보안 취약점 | - 에러 메시지는 정해진 사용자에게 유용한 최소한의 정보만 표현 - 예외 사항을 내부적으로 처리하고 사용자에게는 민감한 정보를 포함하는 오류 출력 금지 |
| 오류 상황 대응 부재 | 오류가 발생할 수 있는 부분을 확인하였으나, 이러한 오류에 대하여 예외 처리를 하지 않았거나 미비로 인해 발생하는 보안 약점 | 오류가 발생할 수 있는 부분에 예외 처리 구문을 작성하고, 제어문을 활용하여 오류를 악용하지 않도록 코딩 |
| 적절하지 않는 예외 처리 | 프로그램 수행 중에 함수의 결과값에 대한 적절한 처리 또는 예외상황에 대한 조건을 적절하게 검사하지 않을 경우, 예기치 않은 문제를 일으킬 수 있는 보안 약점 | 값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 기대한 값인지 검사하고, 예외 처리를 사용하는 경우에는 광범위한 예외 처리 대신 구체적인 예외 처리를 통해 방지 |
세션 통제(Session Control)
: 다른 세션 간 데이터 공유 등 세션과 관련되어 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들이다
: 이미 연결이 종료된 클라이언트의 정보가 사용 가능한 형태로 방치되는 경우 허가되지 않는 사용자가 시스템에 접근할 수 있는 보안 약점이 있다
: 안전한 세션 통제 정책이 적용되기 위해 세션 정보를 안전하게 관리해야 한다
| 취약점 | 설명 | 대책 |
| 불충분한 세션 관리 | 인증 시 일정한 규칙이 존재하는 세션 ID를 발급 세션 타임아웃을 길게 설정한 경우 공격자에 의해 사용자 권한이 도용 |
클래스 변수는 세션 간에 공유되는 데이터가 되므로 클래스 설계 시 세션 정보를 읽고 쓰기가 가능한 변수를 사용하지 않도록 설계 |
코드 오류
: 소프트웨어 구현 단계에서 프로그램 변환 시 오류, 서버의 리소스 자원의 부적절한 반환 등 개발자가 흔하게 실수하는 프로그램 오류를 예방하기 위한 보안 점검 항목들이다
- 널 포인트 역참조
- 정수를 문자로 변환
- 부적절한 자원 해제
- 초기화되지 않는 변수 사용
캡슐화
: 캡슐화는 외부에 은닉이 필요한 중요한 데이터와 필요한 기능성을 불충분하게 캡슐화했을 때 인가되지 않은 사용자에게 데이터 유출, 권한 문제 등이 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들이다
캡슐화 취약점
| 취약점 | 설명 | 대책 |
| 잘못된 세션에 의한 데이터 정보 노출 | 다중 스레드 환경에서 싱글톤 객체 필드에서 경쟁 조건으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출되는 보안 취약점 | 싱글톤 패턴을 사용하는 경우, 변수 범위에 주의하고, 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지 |
| 제거되지 않고 남은 디버그 코드 | 디버깅 목적으로 삽입된 코드가 제거되지 않음으로 인해 공격자에게 의도하지 않은 정보와 제어 정보가 누출될 수 있는 보안 취약점 | 디버거 코드는 개발 완료 후, 삭제 처리 |
| 민감한 데이터를 가진 내부 클래스 사용 | 권한이 없는 클래스를 사용하고자 할 때 발생하는 취약점 | 내부 클래스 사용 시 외부 클래스의 접근 금지 |
| 시스템 정보 노출 | 시스템, 관리자 DB 정보 등 시스템의 내부 데이터를 시스템 메시지 등을 통해 외부로 출력하도록 코딩했을 때 발생하는 보안 취약점 | 시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만 제공함으로써 방지 |
API 오용
: 서비스에서 제공되는 이용에 반하는 방법으로, API를 이용하거나 보안에 취약한 API를 오용하여 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들이다
| 취약점 | 설명 | 대책 |
| DNS Lookup에 의존한 보안 결정 | 도메인명에 의존하여 인증이나 접근 통제 등의 보안 결정을 내리는 경우 발생하는 보안 약점 | 보안 결정에서 도메인명을 이용한 DNS Lookup을 하지 않도록 함 |
| 위험하다고 알려진 함수 사용 | 보안 취약점을 고려하지 않고 개발되어, 사용자체가 취약한 함수들의 보안 취약점 | 안전한 함수 사용 |
| 널 매개변수 미검사 | 자바표준에서 특정 메서드 사용 시 매개변수가 널인 경우 지정된 값을 반환하지 못해 발생하는 예기치 못한 동작에 대한 보안 취약점 | 널 여부를 점검하는 과정을 거친 후 사용해야 함 |
유닉스/리눅스 주요 로그 파일
: 유닉스/리눅스 로그가 저장되는 경로는 시스템마다 조금씩 다르다. 일반적으로 유닉스는 /var/adm 디렉토리에 주로 저장되며, 리눅스의 경우 /var/log 디렉토리에 주로 저장한다
: 리눅스에서는 /var/log 디렉토리에서 시스템의 모든 로그를 기록 및 관리하고 있다
: 시스템의 /etc/syslog.conf 파일에서 시스템 로그 파일들의 위치를 지정하고 있다
: 다양한 로그를 바타응로 해커를 추적하는 것이 가능하다
유닉스/리눅스 주요 로그 파일
| 로그 이름 | 설명 | 내용 확인 명령어 |
| wtmp/wtmpx | 사용자 로그인/로그아웃 정보 시스템 shutdown/reboot 정보 |
last 명령어 |
| utmp/utmpx | 현재 시스템에 로그인한 사용자 정보 | who, w, users, finger |
| btmp/btmpx | 로그인에 실패한 정보 | lastb |
| lastlog | 사용자별 최근 로그인 시간 및 접근한 소스 호스트에 대한 정보 | lastlog |
| sulog | su 명령어 실행 성공/ 실패 결과에 대한 정보 | 텍스트 파일이라서 별도 명령어 없음 |
| acct/pacct | 사용자별로 실행되는 모든 명령어에 대한 로그 | lastcomm, acctcom |
| xferlog | FTP 서비스 데이터 전송 기록 로그 | |
| messages | 부트 메시지 등 시스템의 가장 기본적인 시스템 로그 파일로, 운영에 대한 전반적인 메시지를 저장 | |
| secure | 보안과 관련된 주요 로그를 기록, 사용자 인증과 관련된 로그를 기록 |
네트워크 보안 솔루션
: 네트워크 보안 장비는 접근 통제, 침입차단 및 감지, DDos 탐지 등의 수행하는 일체형 장비들이 포함된다
| 솔류션 | 설명 |
| 방화벽(Firewall) | 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템 |
| 웹 방화벽(WAF, Wep Application Firewall) | 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안 장비 SQL 인젝션, XSS 등과 같은 웹 공격을 탐지하고 차단하는 기능 |
| 네트워크 접근 제어(NAC; Network Access Control) | 단말기나 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션 |
| 침입 탐지 시스템(IDS; Intrusion Detection System) | 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원접근과 보안정책 위반 행위를 실시간으로 탐지하는 시스템 |
| 침입 탐지 시스템(IPS; Intrusion Prevention System) | 네트워크에 대한 공격이나 침입을 실시간으로 차단하고, 유해트래픽에 대한 조치를 능동적으로 처리하는 시스템 |
| 무선 침입 탐지 시스템(WIPS; Wireless Intrusion Prevention System) | 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템 |
| 통합 보안 시스템(UTM; Unified Threat Management) | 방화벽, IDS, IPS, VPN, 안티 바이러스, 이메일 필터리 등 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템 |
| 가상사설망(VPN; Virtual Private Network) | 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔류션 |
| SIEM(Security Information and Event Management) | 다양한 보안 장비와 서버, 네트워크 장비 등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협 상황을 인지하고 ,침해상황에 신속하게 대응하는 보안 관제 솔루션 기업에서 생성하는 테라바이트급 정형, 비정형 데이터와 방화벽, 안티바이러스 시스템, 서버, 네트워크 장비 등으로부터 수집한 다양한 데이터 등을 빅데이터 기반의 로그 분석을 통하여 보안의 위협 징후를 빠르게 판단 대응 할 수 있도록 해주는 보안 관제 솔류션 |
| ESM(Enterprise Security Management) | 방화벽, IDS, UTM, 가상 사설망 등의 여러 보안 시스템으로부터 발생한 각종 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템 ESM은 서로 다른 기종의 보안 장비들을 통합 관리하는 기능과 네트워크 자원 현황의 보아 모니터링 기능이 있고, 주로 이베트 위주의 단시간 위협 분석 및 DBMS 기반의 보안 관리 솔루션 |
시스템 보안 솔루션
| 솔루션 | 설명 |
| 스팸 차단 솔루션 | 메일 서버 앞단의 위치하여 프록시 메일 서버로 동작 메일 바이러스 검사 내부 -> 외부 본문 검색 기능 통한 내부 정보 유출 방지 |
| 보안 운영체제(Secure OS) | 컴퓨터 운영체제의 커널에 보안 기능을 추가한 솔루션 운영체제에 내재된 결함으로 인해 발생할 수 있는 각종 해킹 공격으로부터 시스템을 보호하기 위해 보안 기능을 통합한 보안 커널을 추가한 운영 체제 |
콘텐츠 유출 방지 솔루션
| 솔루션 | 설명 |
| 보안 USB | 정보 유출 방지 등 보안 기능을 갖춘 USB 메모리 사용자 식별/인증, 데이터 암/복호화, 임의복제 방지, 분실 시 데이터 삭제 기능 |
| 데이터 유출 방지(DLP; Data Lass Prevention) | 조직 내부의 중요 자료가 외부로 빠져나가는 것을 탐지하고 차단하는 솔루션 정보 유출을 방지하기 위해 정보의 흐름에 대한 모니터링과 실시간 처리 기능을 제공 |
| 디지털 저작권 관리(DRM; Digital Right Management) | 디지털 저작물에 대한 보호화 관리를 위한 솔루션 파일 자체에 암호를 걸어 권한 없는 사용자는 사용하지 못함 문서 보안 솔루션으로도 사용할 수 있고 문서를 저장할 때 암호화하여 저장하여 권한이 없는 사용자가 문서를 읽지 못하도록 함 |
취약점 분석
: 자산이 가지고 있는 보안상의 결점 또는 취약한 속성을 파악하여 위험을 낮추는 활동이다
위약점 분석 대상
| 분석대상 | 예시 | 결과 |
| 환경 및 시설 | 문, 창문등 물리적 보호 결여 불안정한 전원 설비 재해를 입기 쉬운 입지 조건 |
도난 정전/오작동 천재지변 |
| 하드웨어 | 온/습도의 변화 기억매체의 우지보수 부족 |
고장/오작동 데이터 유실 |
| 소프트웨어 | 명세서 미준비 부적절한 패스워드 백업 부족 |
소프트웨어 장애 정보유출 데이터 소실 |
취약점 분석 절차
| 순서 | 절차 | 설명 |
| 1 | 자산 조사 및 분석 | 어떤 자산에 대해 수행할 지 선정 |
| 2 | 진단 대상 선정 | 자산규모가 작으면 전수 조사 수행 자산규모가 크면 샘플링 수행 |
| 3 | 제약사항 확인 | 진단 수행하는 시간의 제약사항 확인 및 일정분배 |
| 4 | 진단 수행 | 체크리스트 이용 취약점 진단 수행 기술적 관점 : 수동진단/자동진다 관리적 관점 : 담당자 인터뷰 물리적 관점 : 내부 실사 |
| 5 | 결과 분석/보고서 작성 | 점검 항목에 대해 취약점 점수 지정 및 결과 값 산출 결과 분석 및 보거서 작성 통해 진단 완료 |
소프트웨어 개발 보안 테스트
: 소프트웨어 보안 요구사항이 반영되어 있음을 보증하고, 취약점을 발견하고 개선하여 안전한 소프트웨어를 개발하기 위한 활동이다
| 구분 | 설명 | 특징 |
| 정적 분석 | SW를 실행하지 않고 보안 약점을 분석 SW 개발 단계에서 주로 사용 |
취약점 초기 발견으로 수정비용 절감 컴포넌트 간 발생할 수 있는 통합된 취약점 발견에 제한적 설계, 구조 관점의 취약점은 식별 불가 |
| 동적 분석 | SW 실행 환경에서 보안 약점 분석 SW 시험 단계에서 주로 사용 |
소스 코드 필요 없음 정확도와 커버리지 향상 구조 관점의 보안 약점식별 불가 |
비즈니스 연속성 계획(BCP; Business Continuity Plan)
: 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 재해복고, 업무복구 및 재개, 비상계획 등의 통해 비즈니스 연속성을 보장하는 체계이다
: 비즈니스 연속성 계획을 위한 비즈니스 영향 평가(BIA)가 선행되어야 한다
비즈니스 연속성 계획 관련 용어
| 주요 용어 | 설명 |
| BIA(Business Impact Analysis) | 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향 분석 |
| RTO(Recovery Time Objective) | 업무중단 시점으로부터 업무가 복구되어 다시 가동될 때 까지의 시간 |
| RPO(Recovery Point Objective) | 업무중단 시점부터 데이터가 복구되어 다시 정상가동될 때 데이터의 손실 허용 시점 |
| DRP(Disaster Recovery Plan) | 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획 |
| DRS(Disaster Recovery System) | 재해복구계획의 원활한 수행을 지원하기 위해 평상시에 확보하여 두는 인적, 물적 자원 및 이들간의 대한 지속적인 관리체계가 통합된 재해복구센터 |
DRS 유형
| 유형 | 설명 |
| Mirror Site | 주 센터와 데이터복구센터 모두 운영 상태로 실시간 동시 서비스가 가능한 재해 복구 센터 재해 발생 시 복구까지의 소유 시간은 즉시 |
| Hot Site | 주 센터와 동일한 수준의 자원을 대기 상태로 원격지에 보유하면서 동기, 비동기 방식의 미러링을 통하여 데이터의 최신 상태를 유지하고 있는 재해복구센터 재해 발생 시 복구까지의 소요 시간은 4시간 이내 |
| Warm Site | Hot Site와 유사하나 재해복구센터에 주 센터와 동일한 수준의 자원을 보유하는 대신 중요성이 높은 자원만 부분적으로 재해복구센터에 보유하고 있는 센터 재해 발생 시 복구까지의 소요시간은 수일~수주 |
| Cold Site | 데이터만 원격지에 보관하고, 재해 시 데이터를 근간으로 필요 자원을 조달하여 복구 할 수 있는 재해복구센터 재해 발생 시 복구까지의 소요 시간 수주~수개월 구축 비용이 저렴하나 복구 소요 시간이 길고 신뢰성이 낮음 |
보안 공격 관련 중요 용어
| 주요 용어 | 설명 |
| 부 채널 공격 (Side Channel Attack) |
암호화 알고리즘 실행 시기의 전력 소비, 전자기파 방사 등의 물리적 특성을 측정하여 암호 키 등 내부 비밀 정보르 부 채널에서 획득하는 공격 기법 |
| 드라이브 바이 다운로드 (Drive By Download) |
악의적인 해커가 불특정 웹 서버와 웹 페이지에 악성 스크립트를 설치하고, 불특정 사용자 접속 시 사용자 동의 없이 실행되어 서버로 연결하여 감시시키는 공격기법 |
| 워터링홀 (Watering Hole) |
특정인에 대한 표적 공격을 목적으로 특정인이 잘 방문하는 웹 사이트에 악성코드를 심거나 악성코드를 배포하는 URL로 자동으로 유인하여 감염시키는 공격기법 |
| 비즈니스 스캠 (BCAM) |
기업 이메일 계정 도용하여 무역 거래 대금 가로채는 사이버 범죄 |
| 하트 블리드 (HeartBleed) |
OpenSSL 암호화 라이브러리의 하트비트라는 확장 모듈에서 클라이언트 요청 메시지를 처리할 때 데이터 길이에 대한 검증을 수행하지 않는 취약점을 이용하여 시스템 메모리에 내장된 64KB 크기의 데이터를 외부에서 아무런 제한 없이 탈취할 수 있도록 하는 취약점 |
| 크라임웨어 (Crimware) |
중요한 금융정보 또는 인증정보를 탈취하거나 유출을 유도하여 금전적인 이익 등의 범죄행위를 목적으로 하는 악성코드 |
| 토르 네트워크 (Tor Network) |
네트워크 경로를 알 수 없도록 암호화 기법을 사용하여 데이터를 전송하며, 익명으로 인터넷을 사용할 수 있는 가상 네트워크 |
| MITM 공격 (Man in the Middle) |
네트워크 통신을 조작하여 통신 내용을 도청 및 조작하는 공격기법 통신을 연결하는 두 사람 사이 중간에 침입하여 두 사람의 정보를 탈취하는 중간자 공격 |
| DNS 스푸닝 공격 (Spllfing) |
공격 대상에게 전달되는 DNS 응답을 조작하거나 DNS 서버의 캐시 정보를 조작하여 희생자가 의도하지 않은 주소로 접속하게 만드는 공격기법 DNS 캐시 포이즈닝이라고도 함 |
| 포트 스캐닝 (Port Scanning) |
공격자가 침입 전 대상 호스트에 어떤 포트가 활성돠되어 있는지 확인하는 기법으로 침입 전 취약점을 분석하기 위한 사전 작업 |
| 디렉토리 리스팅 취약점 (Directory Listing) |
웹 어플리케이션을 사용하고 있는 서버의 미흡한 설정으로 인해 인덱싱 기능이 활성화되어 있는 경우, 공격자가 강제 브라우징을 통해서 서버 내의 모든 디렉토리 및 파일 목록을 볼 수 있는 취약점 |
| 리버스 쉘 공격 (Reverse Shell) |
타킷 서버가 클라이언트(공격자)로 접속해서 클라이언트가 타깃 서버의 쉘을 획득해서 공격하는 기법 |
| 익스플로잇 (Exploit) |
소프트웨어나 하드웨어의 버그 또는 취약점을 이용하여 공격자가 의도한 동작이나 명령을 실행하도록 코드 또는 그러한 행위 |
| 스턱스넷 공격 (Stuxnet) |
독일 지멘스사의 SCADA 시스템을 공격 목표로 제작된 악성코드로 원자력, 전기, 철강, 반도체, 화학 등 주요 산업 기반 시설의 제어 시스템에 침투해서 오작동을 일으키는 악성코드 공격기법 |
| 크리덴셜 스터핑 (Credential Stuffing) |
사용자 계정을 탈취해서 공격하는 유형 중 하나로, 다른 곳에서 유출된 아이디와 비밀번호 등의 로그인 정보를 다른 웹 사이트나 앱에 무작위로 대입해 로그인이 이루어지면 타인의 정보를 유출시키는 기법 |
보안 공격 대응 관련 용어
| 주요 용어 | 설명 |
| 허니팟(Honeypot) | 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템을 일부러 허술하게 만들어서 해커에게 노출하는 유인시스템 |
| OWASP Top 10 | 웹 어플리케이션 취약점 중 공격 빈도가 높으며, 보안상 큰 영향을 줄 수 있는 10가지 취약점에 대한 대응 방안을 제공하는 웹 보안 기술 가이드 |
| 핑거프린팅 (Finger Printing) |
멀티미디어 콘텐츠에 저작권 정보와 구매한 사용자 정보를 삽입하여 콘텐츠 불법 배포자에 대한 위치 추척이 가능한 기술(저작권 정보구매자 정보) |
| 워커마킹 (Water Marking) |
디지털 콘텐츠에 저작권자 정보를 삽입하여, 불법 복제 시 워터마크를 추출, 원소유자를 증명할 수 있는 콘텐츠 보호 기술 |
| 이상금융거래탐지시스템 (FDS; Fraud Detection System) |
전자금융거래에 사용되는 단말기 정보, 접속 정보, 거래 정보 등을 종합적으로 분석하여 의심 거래를 탐지하고, 이상거래를 차단하는 시스템 |
| CC (Common Scriteria) |
정보기술의 보안 기능과 보증에 대한 평가 기준(등급), 정보보호 시스템의 보안 기능 요구사항과 보증 요구사항 평가를 위해 공통으로 제공되는 국제 평가 기준 |
| 사이버 위협정보 분석 공유 시스템 (C-TAS; Cyber Threats Analysis System) |
사이버 위협정보를 체계적 수립해서 인터넷진흥원 주관으로 관계 기관과 자동화된 정보공유를 할 수 있는 침해 예방 대응 시스템 |
| 정착형 인증 모듈 (PAM; Pluggable Authentication Module) |
리눅스 시스템 내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리 |
| CVE (Common Vulnerabilites And Exposures) |
미국 비 영리화사인 MITER 사에서 공개적으로 알려진 소프트웨어의 보안취약점을 표준화한 식별자 몰록 |
| CWE (Common Weakness Enumberation) |
미국 비영리 회사인 MITER 사가 중심이 되어 소프트웨어에서 공통적으로 발생하는 약점을 체계적으로 분류한 목록으로, 소스 코드 취약점을 정의한 데이터베이스 |
| ISMS (Information Security Management System) |
조직의 주요 정보자산을 보호하기 위하여 정보보호 관리 절차와 과정을 체계적으로 수립하여 지속적으로 관리하고 운영하기 위한 종합적인 체계 |
| PIMS (Personal Infomation Management System) |
기업이 개인정보보호 활동을 체계적, 지속적으로 수행하기 위해 필요한 보호조치 체계를 구축했는지 여부를 점검, 평가하여 기업에게 부여하는 인증제도 |
| PIA (Privacy Impact Assessment) |
개인정보를 활용하는 새로운 정보 시스템의 도입이나 개인정보 취급이 수반되는 기존 정보 시스템의 중대한 변경 시, 동 시스템의 구축, 운영, 변경 등이 프라이버시에 미치는 영향에 대하여 사전에 조사 및 예측, 검토하여 개산 방안을 도출하는 체계적인 절차 |
| TKIP (Temporal Key Integriy Protocol) |
임시 키 무결성 프로토콜 |
| 10. 애플리케이션 테스트 관리 (0) | 2023.04.10 |
|---|---|
| 8. 서버 프로그램 구현 (0) | 2023.04.07 |
| 7. SQL 활용 및 최적화 (0) | 2023.04.07 |
| 6. 응용 SQL 작성하기 (0) | 2023.04.07 |
| 5. 데이터베이스 기본 (0) | 2023.04.06 |