소프트웨어 개발 보안 구축
- Secure SDLC
- 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것
- Secure SDLC의 방법론
- CLASP - SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론
- SDL - 마이크로소프트 사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론
- Seven Touchpoints - 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
- 소프트웨어 개발 보안 요소
- 소프트웨어 개발에 있어 충족시켜야할 요소 및 요건, 기밀성, 무결성, 가용성을 보안의 3대 요소라 함
- 기밀성 - 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용됨
- 무결성 - 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
- 가용성 - 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음
- 인증 - 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
- 대표적 방법 - 패스워드, 인증용 카드, 지문 검사 등
- 부인 방지 - 데이터를 송.수신 한 자가 송.수신 사실을 부인할 수 없도록 송.수신 증거를 제공함
- 시큐어 코딩
- 구현 단게에서 발생할 수 있는 보안 취약점들을 최소화 하기 위해 보안 요소들을 고려하며 코딩하는 것
- 세션 통제 관련 용어
- 세션 - 서버와 클라이언트의 연결을 의미함
- 세션ID - 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
- 스레드 - 프로세스 내의 작업 단위, 시스템의 자원을 할당받아 실행하는 프로그램의 단위
- 다중 스레드 - 두 개 이상의 스레드가 생성되어 동시 처리되는 다중 작업을 다중 스레드 또는 멀티 스레드라고 함
- URL Rewrite - 쿠키를 사용할 수 없는 환경에서 세션ID 전달을 위해 URL에 세션ID를 포함시키는 것
- 입력 데이터 검증 및 표현 관련 용어
- 경로 순회 - 경로를 탐색할 때 사용하는 ‘/’, ‘', ‘..’ 등의 기호를 악용하여 허가되지 않은 파일에 접근하는 방식
- 스크립트 - 소프트웨어를 수행하는데 필요한 처리 절차가 기록된 텍스트, 대표적인 스크립트 파일의 확장자에는 asp, jsp, php 등이 있음
- SQL 삽입
- 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점
- 크로스사이트 스크립팅(XSS)
- 웹 페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점
- 메모리 버퍼 오버플로
- 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점
- 보안 기능 관련 용어
- HTTPS - 웹 브라우저와 서버 간의 안전한 통신을 위해 HTTP와 암호 통신 규약을 결합한 것
- SSL - 데이터를 송.수신하는 두 컴퓨터 사이, 종단 간, 즉 TCP/IP 계층과 애플리케이션 계층 사이에 위치하여 인증, 암호화, 무결성을 보장하는 업계 표준 프로토콜
- 하드코딩 - 데이터를 코드 내부에 직접 입력하여 프로그래밍 하는 방식
- 하드코드된 암호화 키
- 암호화된 키도 하드코드된 경우 유출 시 역계산 또는 무차별 대입 공격에 의해 탈취될 수 있다
- 상수 형태의 암호키를 사용하지 않고, 암호화 키 생성 모듈 또는 보안이 보장된 외부 공간을 이용함으로써 방지 할 수 있다
- TOCTOU 경쟁 조건
- 검사 시점과 사용 시점을 고려하지 않고 코딩하는 경우 발생하는 보안 약점
- 널 포인터 역참조
- 널 포인터가 가리키는 메모리의 위치에 값을 저장할 때 발생하는 보안 약점
- 포인터를 이용하기 저에 널 값을 가지고 있는지 검사함으로써 방지 할 수 있다
- 스택 가드
- 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술
- 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장한 후 그 값이 변경되었을 경우 오버플로우 상태로 판단하여 프로그램 실행을 중단함으로써 잘못된 복귀 주소의 호출을 막음
- 접근 제어자
- 프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터의 접근을 제한하기 위해 사용되는 예약어
- 접근 제어자의 종류
- Public - 클래스 내부, 패키지 내부, 하위 클래스, 패키지 외부에서만 접근 가능
- Protected - 클래스 내부, 패키지 내부, 하위 클래스에서만 접근 가능
- Default - 클래스 내부, 패키지 내부에서만 접근 가능
- Private - 클래스 내부에서만 접근 가능
- 개인키 암호화 기법
- 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법
- 스트림 암호화 방식 - 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화 하는 방식
- 암호화와 복호화 속도가 빠름, 관리해야 할 키 수가 많음
- 블록 암호화 방식 - 한 번에 하나의 데이터 블록을 암호화 하는 방식
- 종류 - DES, SEED, AES, ARIA
- 공개키 암호화 기법
- 데이터를 암호화할 때 사용하는 공개키는 사용자에게 공개하고, 복호화할 때의 비밀키는 관리자가 비밀리에 관리하는 암호화 기법
- 비대칭 암호화 기법, 암호화와 복호화 속도가 느림, 관리해야 할 키 수가 적음, 대표적으로 RSA 기법
- SEED
- 1999년 한국인터넷진흥원에서 개발한 블록 암호화 알고리즘, 블록 크기 128비트, 키 길이에 따라 128, 256으로 분류 됨
- ARIA
- 2004년 국가정보원과 산학연합회가 개발한 블록 암호화 알고리즘
- AES 암호화 알고리즘의 규격을 따름
- DES
- 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘
- 블록 크기 64비트, 키 길이는 56비트, 16회의 라운드 수행
- AES
- 2001년 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘
- 블록 크기 128비트, 키 길이에 따라 AES-128, AES-192, AES-256으로 분류
- RSA
- 1978년 MIT의 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘
- 큰 숫자를 소인수분해 하기 어렵다는 것에 기반하여 만들어짐
- 해시
- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
- 종류 - SHA 시리즈, HAVAL, MD4, MD5, N-NASH, SNEFRU 등
- SHA 시리즈
- 1993년 미국 국가안보국이 설계, 미국 국립표준기술 연구소에 의해 발표 됨
- SHA-0, SHA-1, SHA-2(SHA-223, SHA-256M, SHA-384, SHA-512)
- MD5
- 1991년 R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수
- 블록 크기 512비트, 키 길이 128비트
- N-NASH
- 1989년 일본의 전신전화주식회사에서 발표한 암호화 해시 함수
- 블록 크기 128비트, 키 길이 128비트
- SNEFRU
- 1990년 R.C.Merkle가 발표한 해시 함수
- 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발
- TKIP
- 기존의 무선 랜 보안 프로토콜인 WEP의 취약성을 보완한 데이터 보안 프로토콜
- 입력 키 길이를 128비트로 늘림, 패킷당 키 할당, 키값 재설정 등의 키 관리 방식을 개선
- 인증
- 사용자 컴퓨터 네트워크 시스템이나 네트워크 시스템에서 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
- 인증의 절차
- 지식 기반 인증 - 고정된 패스워드, 패스 프레이즈, 아이핀 등
- 소유 기반 인증 - 신분증, 메모리 카드, 스마트 카드, OTP 등
- 생체 기반 인증 - 지문, 홍채/망막, 얼굴, 음성, 정맥 등
- 위치 기반 인증 - GPS, IP, 콜백 등
- 행위 기반 인증 - 서명, 동작 등
- 보안 아키텍처
- 정보 시스템의 무결성, 가용성, 기밀성을 확보하기 위해 보안 요소 및 보안 체계를 식별하고 이들 간의 관계를 정의한 구조
- 관리적, 물리적, 기술적 보안 개념의 수립, 보안 관리 능력의 향상, 일관된 보안 수준의 유지 기대 가능
- 보안 프레임워크
- 안전한 정보 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
- ISO 27001 - 정보보안 관리를 위한 국제 표준, 보안 인증이자 가장 대표적인 보안 프레임워크, 영국의 BSI가 제정한 BS7799를 기반으로 구성됨
- 방화벽
- 기업이나 조직 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용.거부.수정하는 기능을 가진 침입 차단 시스템
- 침입 탐지 시스템
- 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템
- 오용 탐지 - 미리 입력해 둔 공격 패턴이 감지되면 이를 알려줌
- 이상 탐지 - 평균적인 시스템의 상태를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려줌
- 침입 방지 시스템
- 비정상적인 트래픽을 능동적으로 차단하고 격리하는 등의 방어 조치를 취하는 보안 솔루션
- 데이터 유출 방지
- 내부 정보의 외부 유출을 방지하는 보안 솔루션
- 웹 방화벽
- 일반 방화벽이 탐지하지 못하는 SQL 삽입 공격, Cross-Site Scripting 등의 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽
- VPN
- 인터넷 등 통신 사업자의 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
- NAC
- 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔루션
- ESM
- 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
- AAA
- 3가지 기능을 기반으로 사용자의 컴퓨터 자원 접근에 대한 처리와 서비스를 제공하는 기반 구조 또는 규격을 의미
- 인증(Authentication) - 접근하는 사용자의 신원을 검증하는 기능
- 인가(Authoriztion) - 신원이 검증된 사용자에게 특정된 권한과 서비스를 허용하는 기능
- 과금(Accounting) - 사용자가 어떤 종류의 서비스를 이용했고, 얼마만큼의 자원을 사용했는지 기록 및 보관하는 기능
- 정보보호 관리 체계
- 정보 자산을 안전하게 보호 하기 위한 보호 절차와 대책을 의미
- 서비스 거부 공격
- 표적이 되는 서버의 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 표적이되는 서버의 정상적인 기능을 방해하는 것
- 주요 서비스 거부 공격의 유형 - Ping of Death, SMURFING, SYN Flooding, TearDrop, LAND Attack, DDoS 공격
- Ping of Death
- Ping 명령어를 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거부 공격 방법
- SMURFING
- IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법
- SYN Flooding
- 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상자인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법
- TearDrop
- Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법
- LAND Attack
- 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에 전송하는 것, 이러한 패킷이 계속해서 전송될 경우 자신에 대해 무한히 응답하게 하는 공격 방법
- DDoS 공격
- 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 서비스 거부 공격을 수행하는 것
- 분산 서비스 공격용 툴
- 에이전트의 역하을 수행하도록 설계된 프로그램, 데몬이라고 부름
- Trin00 - 가장 초기 형태의 데몬으로, 주로 UDP Flooding 공격을 수행함
- TFN - UDP Flooding 뿐만 아니라 TCP SYN Flood 공격, ICMP 응답 요청, 스머핑 공격 등을 수행함
- TFN2K - TFN의 확장판
- Stacheldraht - 이전 툴들의 기능을 유지하면서, 공격자, 마스터, 에이전트가 쉽게 노출되지 않도록 암호화된 통신을 수행함, 툴이 자동으로 업데이트 됨
- 세션 하이재킹
- 상호 인증 과정을 거친 후 접속해 있는 서버와 서로 접속되어 클라이언트 사이의 세션 정보를 가로채는 공격 기법
- TCP 3-Way-Handshake 과정에 끼어듦으로써 클라이언트와 서버 간의 동기화된 시퀀스 번호를 가로채 서버에 무단으로 접근함
- ARP 스푸핑
- 자신의 물리적 주소를 공격대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로채거나 방해하는 기법
- ARP - 호스트의 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소로 변환해주는 프로토콜
- 스니핑
- 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형의 하나, 수동적 공격에 해당
- 워터링 홀
- 목표 대상이 자주 방문하는 웹 사이트를 사전에 감염시켜 대상이 해당 사이트에 방문했을 때 악성 코드에 검염되게 하는 웹 기반 공격
- 키로거 공격
- 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 계좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격
- 랜섬웨어
- 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램으로, 암호 해독용 프로그램의 정보를 조건으로 사용자에게 돈을 요구하기도 함
- 백도어
- 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로, 컴퓨터 범죄에 악용되기도 함
- 백도어 탐지 방법 - 무결성 검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사 등
- 기타 정보 보안 관련 용어 1
- 스미싱 - 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법
- 스피어 피싱 - 사회 공학의 한 기법으로, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 사용자의 개인 정보를 탈취하는 공격
- APT - 다양한 IT 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격
- 무작위 대입 공격 - 암호화된 문서의 암호키를 찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식
- 큐싱 - QR코드를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융사기 기법의 하나로, QR코드와 개인정보 및 금융정보를 낚는다는 의미의 합성 신조어
- WEP - 유선 랜에서 기대할 수 있는 것과 같은 보안과 프라이버시 수준의 무선 랜의 보안 프로토콜
- WPA2 - WEP의 취약성에 대한 대안으로 발표된 무선랜 보안 기술 규격으로, IEEE 802.11i 표준을 수용하지 못했던 WPA를 개선한 버전
- EDR - 엔드포인트 영역에 대한 지속적인 모니터링을 통해 행위 기반 위협 탐지 및 분석, 대응 기능을 제공하는 솔루션
- 엔드포인트 - 요청을 보내는 시작점인 사용자의 PC, 스마트폰이나 서비스의 종착점인 서버 등을 의미
- TMS - 전사적 IT인프라에 대한 위협정보를 수집.분석.경보.관리하는 정보보호 통합관리 시스템, 실시간으로 공신력 있는 대외 정보보호기관의 위협정보들을 수집.분석하여 정보보호관리자에게 제공
- DTLS - 전송 계층 프로토콜인 UDP 기반으로 통신을 수행하는 경우 SSL/TLS와 유사한 보안 기능을 제공하는 프로토콜
- 크리덴셜 스터핑 - 무차별 대입 공격의 일종, 공격자가 미리 확보해 놓은 로그인 자격 증명을 다른 계정에 무작위로 대입해 사용자 계정을 탈취하는 공격 방식
- POODLE - TLS 연결을 SSL 3.0으로 낮춰 SSL 3.0의 취약점을 이용하여 암호문을 해독하는 공격 기법
- DDE - 마이크로소프트 오피스와 애플리케이션 사이에서 데이터를 전달하는 프로토콜, 엑셀 등 오피스 프로그램에서 DDE가 활성화될 시 일반 문서로 위장한 악성 코드가 전파될 수 있음
- 기타 정보 보안 관련 용어 2
- 좀비 PC - 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터로, C&C 서버의 제어를 받아 주로 DDoS 공격 등에 이용됨
- C&C 서버 - 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성 코드를 제어하기 위한 용도로 사용하는 서버
- 봇넷 - 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
- 웜 - 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스, 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머 등의 형태
- 제로 데이 공격 - 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격, 공격의 신속성을 의미
- 트로이 목마 - 정상적인 기능을 하는 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키지만 자기 복제 능력은 없다
- CC 인증 - 국가마다 서로 다른 정보보호시스템 평가기준을 연동하고 평가결과를 상호 인증하기 위해 재정된 정보보안 평가기준, ISO/IEC 15408에 등록된 국제 표준
- 멀버타이징 - 악성 소프트웨어를 뜻하는 멀웨어와 광고의 합성어, 온라인 광고를 통해 악성 코드를 유포시키는 행위
- 정보공유분석센터 - 취약점 및 침해요인과 그 대응방안에 관한 정보를 제공, 침해사고가 발생하는 경우 실시간 정보.분석ㅁㅁ를 운영, 금융.통신 등 분야별 정보통신기반시설을 보호하기 위한 업무를 수행하는 곳
- 업무연속성계획 - 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 ㅁㅁ 복구, 업무복구 및 재개, 비상계획 등의 비즈니스 연속성을 보장하기 위한 계획, RTO, RPT, 우선순위를 선정하기 위해 업무 영향 분석을 수행
- 데이터 디들링 - 처리할 자료를 다른 자료와 바꿔서 처리하는 것, 임력값이나 출력값을 부정한 의도로 수정하여 잘못된 결과를 나오도록 유도하는 방식
- 비트로커 - Windows 7부터 지원되기 시작한 Windows 전용의 ㅁㅁ 암호화 기능, TPM과 AES-128 알고리즘을 사용
- 공급망 공격 - 소프트웨어 공급망에 침투하여 악성코드를 배포하는 ㅁㅁ, SW 빌드 및 배포 과정에 악성코르를 삽입하여 이용자들을 공격
댓글남기기