ETC

[정보 보안 개론]개정 4판 1장~5장 요약본

먹지 2024. 10. 13. 04:24

💡 요약 미리보기

정보 보안 개요

  • 정보 보안의 3대 요소는 기밀성, 무결성, 가용성이다
  • 정보 보안 전문가는 윤리 의식, 다양한 분야의 지식, 관련 법규 이해가 필요하다

시스템 및 네트워크 보안

  • 시스템 보안은 계정, 세션, 접근 제어, 권한, 로그, 취약점 관리 등을 포함한다
  • 네트워크 보안 위협에는 DoS, DDoS, 스니핑, 스푸핑, 세션 하이재킹 등이 있다

웹 및 코드 보안

  • 웹 보안 취약점으로는 명령 삽입, 인증 및 세션 관리 취약점, XSS, CSRF 등이 있다
  • 코드 보안에서는 버퍼 오버플로우, 포맷 스트링 공격, 메모리 해킹 등에 주의해야 한다

모바일 및 악성 코드

  • iOS와 안드로이드는 서로 다른 보안 체계를 가지고 있으며, 각각의 취약점이 존재한다
  • 악성 코드는 프로그램 실행에 필요한 메모리를 직접 조작하여 공격하는 방식이다

1장: 정보 보안의 세계

01. 정보보안의 역사

구분 내용

1950년대 이전 암호화 기계 에니그마, 최초의 컴퓨터 콜로서스, 콜러서스 개발자이자 최초의 해커인 앨런 튜링
1960년대 최초의 컴퓨터 연동망(네트워크) ARPA, 유닉스 운영체제 개발, 전화망 해킹으로 무료 장거리 전화 시도
1970년대 최초의 이메일 전송, 마이크로소프트 설립, 애플 컴퓨터 탄생, C언어 개발
1980년대 네트워크 해킹 시작, 카오스 컴퓨터 클럽, GNU와 리처트 스톨먼, 해커 잡지인 <프랙>과 <2600>, 케빈 미트닉, 모리트 웜, <해커 선언문>
1990년대 데프콘 해킹 대회, 트로이 목마, 백 오리피스
2000년대 분산 서비스 거부(DDoS)공격 이후로 야후, CNN, 아마존 사이트 마비, 슬래머 웜으로 인한 인터넷 대란, 웜 삼총사(베이글 웜, 마이둠 웜, 넷스카이 웜) 등장, 개인 정보 유출과 도용, 전자 생거래 교란, 지능적 지솝 위협(APT)공격에 의한 금융 해킹
2010년대 농협 사이버 테러, 해킹의 대상이자 도구가 된 스마트폰, 가상 화폐 해킹

02. 보안의 3대 요소

기밀성

인가된 사용자만 정보 자산에 접근할 수 있도록 하는 것

무결성

적절한 권한을 가진 사용자가 인가한 방법으로만 정보를 변경할 수 있도록 하는 것

가용성

정보 자산에 대해 필요한 시점에 접근이 가능하도록 하는 것

03. 보안 전문가의 자격 요건

  • 윤리 의식
    • 진정한 정보 보안 전문가는 반드시 올바른 윤리 의식을 갖추어야 함
    • 정보보안 전문가가 참고할 보안 관련법
      • 정보통신망 이용촉진 및 정보보호 등에 관한 법률, 정보통신기반 보호법, 개인정보 보호법, 클라우드컴퓨팅법, 전자정부법 등
  • 다양한 분야의 지식
    • 정보 보안 전문가: 운영체제, 네트워크, 프로그래밍, 서버, 보안 시스템, 모니터링 시스템, 암호, 정책과 절차 등 다양한 분야에서 전문성을 갖춰야 함

2장: 시스템 보안

01. 시스템 보안 주제

  • 계정 관리 : 적절한 권한을 가진 사용자를 식별하여 인증하는 관리
  • 세션 관리 : 사용자와 시스템 사이 또는 두 시스템 사이의 활성화된 접속에 대한 관리
  • 접근 제어 : 시스템에 대한 네트워크 관점의 접근 통제
  • 권한 관리 : 시스템의 각 사용자가 적절한 권한으로 적절한 정보 자산에 접근할 수 있도록 통제
  • 로그 관리 : 시스템에 영향을 미치는 관련 사항을 기록하여 관리
  • 취약점 관리 : 시스템 자체의 결함에 대한 관리

02. 보안 인증 방법

  • 알고 있는 것 : 패스워드와 같이 머릿속으로 기억하고 있는 정보를 이용하여 인증 수행
  • 가지고 있는 것 : 신분증, OTP 장치 등으로 인증 수행
  • 스스로의 모습 : 홍채와 같은 생체 정보 이용
  • 위치하는 곳 : 콜백 등 사용자의 위치 정보 이용

03. 시스템별 관리자 계정

  • 윈도우: administrator
  • 유닉스(리눅스): root
  • MS-SQL: sa(system administrator)
  • 오라클: sys, system

04. 세션 관리

  • 세션 하이재킹, 네트워크 패킷 스니핑을 막기 위해 암호화 적용
  • 지속적인 인증을 통해 세션의 유효성 검증

05. 접근 제어

  • 주요 네트워크 서비스와 관리자 인터페이스 목록 파악, 네트워크 서비스별로 IP를 통한 접근 제어 수행
  • TCP Wrapper를 통한 접근 제어 가능

06. 운영체제 권한

  • 윈도우 : 모든 권한, 수정, 읽기 및 실행, 디렉터리 내용 보기, 읽기, 쓰기
  • 유닉스(리눅스) : 읽기(r), 쓰기(w), 실행(x)

07. 데이터베이스에서 DCL을 이용한 권한 부여 구조

08. 뷰

  • 참조 테이블의 각 열에 대한 사용자의 권한 설정을 간편하게 관리하기 위한 가상 테이블

09. AAA

Authentication(인증)

자신의 신원을 시스템에 증명하는 과정

Authorization(인가)

지문이나 패스워드 등을 통해 로그인이 허락된 사용자로 판명되어 로그인하는 과정

Accounting

로그인했을 때 시스템이 이에 대한 기록을 남기는 활동

10. 윈도우와 유닉스의 로그 종류

윈도우 로그 설명

개체 액세스 감사 특정 파일이나 디렉터리, 레지스트 키, 프린터 등와 같은 객체에 대해 접근을 시도하거나 속성 변경 등 탐지
계정 관리 감사 신규 사용자, 그룹 추가, 기존 사용자/그룹 변경, 사용자 비/활성화, 계정 패스워드 변경 등 감사
계정 로그인 이벤트 감사 로그온 이벤트 감사와 마찬가지로 계정의 로그인에 대한 사항을 로그로 남김. 전자는 도메인 계정을 사용할 때 생성, 후자는 로클 계정을 사용할 때 생성
권한 사용 감사 권한 설정 변경이나 관리자 권한이 필요한 작업을 수행할 때 로깅
로그인 이벤트 감사 로컬 계정의 접근 시 생성되는 이벤트 감사. 계정 로그온 이벤트 감사에 비해 다양한 종류의 이벤트 확인 가능
디렉터리 서비스 액세스 감사 시스템 액세스 제어 목록(SACL)이 지정되어 있는 액티브 디렉터리 개체에 접근하는 사용자에 대한 감사 로그 제공
정책 변경 감사 사용자 권한 할당 정책, 감사 정책, 신뢰 정책의 변경과 관련된 사항 로깅
프로세스 추적 감사 사용자 또는 응용 프로그램이 프로세스를 시작하거나 중지할 때 해당 이벤트 발생
시스템 이벤트 시스템의 시작과 종료, 보안 로그 삭제 등 시스템이 주요한 사항에 대한 이벤트를 남김

유닉스 로그 설명

utmp 현재 로그인한 사용자의 아이디, 사용자 프로세스, 실행 레벨, 로그인 종류 등을 기록
wtmp 사용자 로그인, 로그아웃 시간, IP와 세션 지속 시간, 시스템 종료와 시작 시간 기록
secure(sulog) 원격지 접속 로그와 su(swtich user), 사용자 생성 등과 같이 보안에 직접적으로 연관된 로그 저장
history 명령 창에서 실행한 명령 기록
syslog 시스템 운영과 관련한 전반적 로그

11. 데이터베이스의 로그 종류

  • MS-SQL: 일반 로그인 감사, C2 감사 추적
  • 오라클: 문장, 권한, 객체 감사

12. 취약점 관리

  • 패치, 응용 프로그램별 고유 위험 관리, 응용 프로그램의 정보 수집 제한 등

13. 모바일 운영체제의 역사

OS 내용

팜 OS 1996년에 개발된 운영체제. 주소, 달력, 메모장, 할 일 목록, 계산기, 개인정보를 숨기기 위한 간단한 보안 툴 포함
윈도우 CE PDA나 모바일 장치 등에 사용하기 위해 만든 운영체제. 1MB 이하의 메모리에서도 동작 가능. 1996년 초기 버전인 윈도우 CE 1.0 출시
블랙베리 OS RIM이 만든 뫄일 운영체제. 메시지와 이메일 전송 기능 및 보안 초점. 2000년에 블랙베리 5790 모델을 시작으로 블랙베리 명칭이 사용됨
iOS 애플의 아이폰과 아이패드에 사용되는 모바일 운영체제. 2007년에 출시된 아이폰 오리지널의 운영체제로 시작
안드로이드 구글과 이동통신 관련 회사 연합체가 개발한 개방향 모바일 운영체제. 2007년에 HTC Dream(T-Mobile G1) 구글폰에 안드로이드 1.0이 탑재된 것이 시초

14. iOS와 안드로이드 보안 체계 비교

구분 / iOS / 안드로이드

운영체제 Darwin UNIX에서 파생하여 발전한 OS X의 모바일 버전 리눅스 커널(2.6.25)을 기반으로 만들어진 모바일 운영체제
보안 통제권 애플 개발자 또는 사용자
프로그램 실행 권한 관리자(root) 일반 사용자
응용 프로그램 서명 애플이 자신의 CA를 통해 각각의 응용 프로그램을 서명해 배포 개발자 서명
샌드박스 프로그램 간 데이터 통신 엄격히 통제 iOS에 비해 상대적으로 자유롭게 앱 실행 가능
부팅 절차 암호화 로직으로 서명된 방식에 의해 안전한 부팅 절차 확보  
소프트웨어 관리 단말 기기별 고유한 소프트웨어 설치 키 관리  

15. iOS와 안드로이드의 취약점

  • iOS
    • 탈옥한 iOS기기에서 대부분 발생
    • root의 패스워드가 ‘alpine’으로 설정되어있음
    • 탈옥된 iOS에서 SSH 서버를 실행하며 로컬 또는 원격지에서 로그인 가능
  • 안드로이드
    • 사용자가 보안 수준 선택 가능
    • 자유로운 운영체인 만큼 바이러스와 악성 코드 유포됨, 그에 따른 백신 보급

16. 모바일 기기 보안 문제점

  • 이동성 : 모바일 기기의 뛰어난 이동성으로 인해 공격을 받을 때보다 공격에 사용될 때의 문제 소지가 더 큼. 이를 악용해 워드드라이빙으로 좀 더 넓은 영역이나 쉽게 접근하기 어려운 곳의 무선 랜까지 공격 가능
  • 블루투스 : 무선으로 다양한 장치 등을 연결하는 기술. 여러 가지 장치가 작은 규격과 적은 전력으로 접근하기 때문에 높은 수준의 암호화와 인증을 구현하기 어려워 위험 노출될 가능성 有
  • 블루프린팅 : 서비스 발견 프로토콜(SDP)을 통해 블루투스 장치를 검색하고 모델 확인
  • 블루스나프 :OPP기능을 사용해 블루투스 장치에 있는 주소록, 달력 등의 내용을 요청해 열람. 취약한 장치의 파일 접근 가능
  • 블루버그 : 공격자가 10~15m 정도의 거리에서 블루투스 기기에 전화 걸기, 블특정 번호로 SMS 보내기, 주소록 읽기 및 쓰기 등 실행 가능

3장: 네트워크 보안

01. OSI 7계층

7계층: application (응용 프로그램)

  • 응용 프로세스와 직접 관계해 일반적인 응용 서비스 수행

6계층: persentation (표현)

  • 코드 간의 번역 담당
  • 사용자 시스템에서 데이터 구조를 통일하여 응용 프로그램 계층에서 데이터 형식의 차이로 인해 발생하는 부담 절감

5계층: session (세션)

  • 양 끝단의 응용 프로세스가 통신 관리 방법 제공

4계층: transport (전송)

  • 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고받게 함으로써 상위 계층이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않게 함

3계층: network (네트워크)

  • 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할
  • 다양한 길이의 데이터를 네트워크를 통해 전달, 전송 계층이 요구하는 서비스 품질(QoS)을 위해 기능/절차적 수단 제공

2계층: data link (데이터 링크)

  • 두 지점 간의 신뢰성 있는 전송을 보장하기 위한 계층
  • 16진수 12개로 구성된 MAC 주소 사용

1계층: physical (물리)

  • 실제 장치를 연결하기 위한 전기/물리적 세부 사항을 정의한 계층
  • 랜선 등 포함

02. TCP의 3-웨이 핸드셰이킹과 연결 해제 과정

3-웨이 핸드셰이킹 (연결설정과정)

연결 해제 과정

03. 서비스 거부 공격(Dos)

  • 취약점 공격형
    • 공격 대상이 특정 형태의오류가 잇는 네트워크 패킷의 처리 로직에 문제가 있을 때 그것을 이용하여 오작동을 유발하는 공격 형태
    • 보잉크/봉크/티어드롭 공격, 랜드마크 공격
  • 자원 고갈 공격형
    • 네트워크 대역폭이나 시스템의 CPU, 세션 등의 자원을 소모시키는 공격
    • 랜드 공격, 죽음의 핑 공격, SYN 플러딩 공격, HTTP GET 플러딩 공격, HTTP CC 공격, 동적 HTTP 리퀘스트 플러딩 공격, 슬로 HTTP 헤더 Dos(슬로로리스) 공격, 슬로 HTTP POST 공격, 스머프 공격, 메일 폭탄 공격 등

04. 분산 서비스 거부 공격(DDoS)

  • 공격자가 광범위한 네트워크를 이용해 다수의 공격 지점에서 동시에 한 곳을 공격하는 형태의 서비스 거부 공격
  • 공격자, 마스터, 에이전트 구성
  • 자동화된 툴을 이용하여 증폭된 형태의 서비스 거부 공격 수행

05. 스니핑 공격

  • 일반적으로 작동하는 IP 필터링과 MAC 주소 필터링을 수행하지 않고, 랜 카드로 들어오는 전기적 신호를 모두 읽은 뒤 다른 이의 패킷을 관찰하여 정보 유출
  • ping,ARP, DNS, 유인, ARP watch를 이용해 스니퍼 탐지 가능

06. 스푸핑 공격

  • 스푸핑 공격의 대상: MAC 주소, IP 주소, 포트 등 네트워크 통신과 관련된 모든 것이 될 수 있음
  • 시스템 권한 얻기, 암호ㅗ하된 세션 복호화하기, 네트워크 트래픽 흐름 변환 등 다양하게 나타남
  • ARP 스푸핑 공격, IP 스푸핑 공격, ICMP 리다이렉트 공격, DNS 스푸핑 공격 등

07. 세션 하이재킹 공격

  • 두 시스템 간의 연결이 활성화된 상태, 즉 로그인된 상태를 가로채는 공격
  • 서버와 클라이언트가 TCP를 이용하여 통신하고 있을 때 RST 패킷을 보내어 일시적으로 TCP 세션을 끊고 시퀀스 넘버를 새로 생성하여 세션을 빼앗아 인증을 회피하는 형태

08. 무선 네트워크 보안

  • 물리적인 보안 유지, 관리자 패스워드 변경
  • SSID 브로드 캐스팅 금지
  • WEP 암호화: 128비트 키까지 암호화 키 제공
  • WPA-PSK 암호화: WEP 암호화의 취약점을 해결한 암호화 방식 제공
  • EAP와 802.1x 암호화 : EAP - 무선 랜 클라이언트와 RADIUS 서버 간의 통신을 가능하게 하는 프로토콜 802.1x - 포트에 대한 접근 통제

4장: 웹 보안

01. HTTP

  • HTTP Request
    • GET 방식: 요청 데이터의 인수를 웹 브라우저의 URL을 통해 전송
    • POST 방식: URL에 요청 데이터를 기록하지 않고 HTTP 헤더에 데이터를 전송
  • HTTP Response
    • 200번대(성공): 클라이언트의 요구가 성공적으로 수신 및 처리됨
    • 500번대(서버 측 에러): 서버 자체에서 발생한 오류 상황이나 요구사항을 제대로 처리할 수 없을 때

02. 웹 서비스 언어

  • 프론트엔드
    • HTML 기반의 정적인 웹 서비스, JS를 이용한 동적인 웹서비스 통칭
    • 모두 클라 측 웹 브라우저에 이해 해석 & 적용
  • 백엔드
    • 클라의 요청에 따라 웹 서비스에 필요한 요청 결과만 전송

03. 웹 프록시를 통한 취약점 분석

  • 웹 프록시: 웹의 구조 파악, 취약점 점검시 or 웹 해킹을 할 때 사용하는 툴
  • 일반적으로 웹 해킹에 사용되는 웹 프록시는 클라에 설치되고 클라의 통제를 받음
  • 클라가 웹 서버와 웹 브라우저 간에 전달되는 모든 HTTP 패킷을 웹 프록시를 통해 확인하면서 수정 가능

04. 구글 해킹을 통한 정보 수집

검색 인자 설명 검색 추가 인자

site 특정 도메인으로 지정한 사이트에서 검색하려는 문자열이 포함된 사이트 찾기 0
filetype 특정 파일 유형에 한해 검색하는 문자가 들어 있는 사이트 찾기 0
link 링크로 검색하는 문자가 들어 있는 사이트 찾기 x
cache 특정 검색어에 해당하는 캐시된 페이지 보여줌 x
intitle 페이지 제목에 검색하는 문자가 들어 있는 사이트 찾기 x
inurl 페이지 URL에 검색하는 문자가 들어 있는 사이트 찾기 x

05. 웹의 주요 취약점

취약점 종류 설명

명령 삽입 취약점 • 클라이언트의 요청을 처리하기 위해 전송받는 인수에 특정 명령을 실행하는 코드를 포함해 웹 서버에 전송하고 실행
• 웹 서비스가 예외적인 문자열을 적절히 필터링하지 못하는 경우에 발생  
• ex) SQL 삽입 공격  
인증 및 세션 관리 취약점  취약한 패스워드 설정
: 취약한 인증의 가장 대표적인 문제점은 패스워드 설정, 웹을 비롯해 패스워드를 사용하는 모든 운영체제와 응용 프로그램에 공통 해당  
 사용자 데이터를 이용한 인증  
: 데이터 신뢰도에 대한 증명 권한을 클라에 넘기면 클라가 권한 악용 가능  
XSS 취약점 • 공격자가 작성한 스크립트가 다른 사용자에게 전달됨
• 다른 사용자의 웹 브라우저 안에 적절한 검증 없이 실행되기 때문에 사용자의 세션을 탈취하거나 웹 사이트를 변조하고 악의적인 사이트로 이동 가능  
취약한 접근 제어 • 관리자 페이지가 추측하기 쉬운 URL이거나 인증이 필요한 페이지에 대한 인증 미처리로 인해 인증을 우회하여 접속할 수 있는 취약점
• 인증 우회를 막으려면 중요 페이지에 접근할 때 사용자 세션 값(쿠키) 검증  
보안 설정 오류 • 디렉터리 리스팅: 웹 브라우저에서 웹 서버의 특정 디렉터리를 열면 그 디렉터리에 있는 파일과 목록이 모두 나열됨
• 백업 및 임시 파일 존재: 공격자는 개발자가 남겨둔 백업 파일이나 임시 파일을 통해 중요한 정보 획득 가능  
• 미흡한 주석 관리: 주석에는 여러 가지 정보가 기록되므로 주의 요망  
민감한 데이터 노출 • 데이터의 중요도에 따라 암호화 로직 사용, 데베 테이블 단위에서 암호화 수행해야 함
공격 방어 취약점 • 웹 앱에서 공격의 탐지, 로깅, 응답 및 공격 시도 차단을 수행해야 함
CSRF 취약점 • 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 하게 만드는 공격
취약점이 있는 컴포넌트 사용 • 사용하려는 컴포넌트, 라이브러리 등의 보안 취약점이 무엇인지 충분히 검토해야 함
취약한 API • 보안에 취약한 API사용은 보안 문제를 초래할 수 있으므로 충분한 검토 요망

06. 웹의 취약점 보완

  • 특수 문자 필터링
    • XSS 취약점 공격: < > & “ ?
    • SQL 삽입 공격: = ; * . .. - -
    • XSS 취약점 공격 & SQL 삽입 공격: ‘
    • XSS 취약점 공격 & 디렉터리 탐색 공격: /
  • 서버 통제 적용
  • 지속적인 세션 관리

5장: 코드보안

01. 메모리의 기본 구조

  • 스택: 프로그램 로직이 동작하기 위한 인자와 프로세스 상태 저장
  • 힙: 프로그램이 동작할 때 필요한 데이터 정보를 임시로 저장

02. 80x86 CPU의 주요 레지스터

03. 셸

  • 운영체제를 둘러싸고 있으면서 입력 받는 명령어를 실행하는 명령어 해석기

04. 프로세스 권한과 SetUID

  • 각 계정에는 고유한 UID가 있는데, SetUID가 부여된 프로그램을 실행할 대는 다음과 같이 임시로 권한을 ㅏ바꿀 수 있음

05. 버퍼 오버플로 공격

  • 데이터의 길이에 대한 불명확한 정의를 악용한 덮어쓰기로 발생
    • 정상적인 경우에는 사용되지 않아야 할 주소 공간, 즉 원래는 경계선 관리가 적절하게 수행되어 덮어쓸 수 없는 부분에 해커가 임의의 코드를 덮어쓰는 공격
  • 버퍼 오버플로 공격의 대응책 중 하나는 버퍼 오버플로에 취약한 다음과 같은 함수를 사용하지 않는 것
    • strcpy(char *dest, const char *src);
    • strcat(char *dest, const char *src);
    • getwd(char *buf);
    • gets(char &s);
    • fscanf(FILE *stream, const char *format, …);
    • scanf(const char *format, …);
    • realpath(char *pth, char resolved_path[]);
    • sprintf(char *str, const char *format);

06. 포맷 스트링 공격

  • 데이터 형태에 대한 불명확한 정의로 발생
  • 버퍼 오버플로 공격처럼 ret 값을 변조해 임의의 코드 실행 가능

07 포맷 스트링 문자 종류

파라미터 특징

%d 정수형 10진수 상수(integer)
%f 실수형 상수(float)
%lf 실수형 상수(double)
%s 문자 스트링((cosnt)(unsigned) char *)
%u 양의 정수(10진수)
%o 양의 정수(8진수)
%x 양의 정수(16진수)
%s 문자열
%n *int(쓰인 총 바이트 수)
%hn %n의 절반인 2바이트 단위

08. 메모리 해킹

  • 프로그램 동작에 관여하지 않고, 프로그램이 실행되는 데 필요한 정보를 저장해둔 메모리를 직접 조작하여 프로그램 실행에 관여하는 공격 방법