본문 바로가기

[정보보안기사] 시스템 보안 - 클라이언트 보안

액트 2019. 6. 20.
반응형


- 목차 -

2. 클라이언트 보안
    (1) 윈도우 보안
        ① 윈도우 시스템 
        ② 윈도우 인증 시스템
        ③ 윈도우 실행 프로세스
        ④ 윈도우 사용자 계정

        ⑤ NTFS 파일 시스템

         공유 폴더

         레지스트리

         하이브 파일

         이벤트 로그 및 웹 아티팩트 분석

        ⑩ 바이러스와 악성코드
    (2) 인터넷 활용 보안
        ① 웹브라우저 보안
        ② 메일 클라이언트 보안
    (3) 공개 해킹 도구에 대한 이해와 반응
        ① 트로이 목마
        ② 크래킹
        ③ 키로그
    (4) 도구활용 보안관리
        ① 클라이언트 보안도구 활용
        ② 클라이언트 방화벽 운영


2. 클라이언트 보안

    (1) 윈도우 보안

        ① 윈도우 시스템 
            - GUI, 다중 사용자, 다중 프로세스 구조를 지원하는 운영체제


            - 다양한 하드웨어를 자동으로 인식하여 사용할 수 있는 Plug&Play 기능을 지원


            - 윈도우의 HAL(Hardware Abstraction Layer) 계층을 통해 표준화된 하드웨어를 인식하며 Micro Kernel이 

              하드웨어를 관리

 

            - 윈도우 세부내용
                  ▶ HAL(Hardware Abstraction Layer) - 하드웨어 추상화

                           → 하드웨어의 자원을 직접 접근을 흉내내는 소프트웨어들의 집합
                  ▶ Micro Kernel

                           → 메모리 관리, 스케쥴링, 기본적인 IPC등 최소한의 기능만을 제공
                  ▶ IO Manager
                  ▶ Object Manager
                  ▶ Security Reference Manager
                  ▶ Process Manager
                  ▶ Local Precedure Call
                  ▶ Virtual Memory Manager
                  ▶ Win32/64 Sub System
                  ▶ POSIX
                  ▶ Security Sub System
                  ▶ 윈도우 파일 시스템의 경우 FAT(File Allocation Table)과 NTFS(NT File System)을 지원한다.
                         ▷ FAT : 도스를 기반으로 하는 파일 시스템으로 작은 파일 시스템에서 사용된다.
                         ▷ NTFS : 대용량 파일과 긴 파일명, 압축, 저널링 정보를 통한 오류 처리 등을 지원한다.

        ② 윈도우 인증 시스템 

            - 인증 프로세스 

                  ▶ winlogon은 내부적으로 msgina.dll 이라는 GINA프로그램을 실행시킨 후 검증을 위해서 

                      아이디를 LSA에 전달한다.
                      NTLM값과 SAM에 저장된 NTLM 값을 비교하여 같으면 SRM에 권한(토큰)을 부여

 

            - 용어 설명 
                  ▶ Winlogon : 윈도우 로그인 프로세스
                  ▶ GINA(msgina.dll) : Winlogon은 msgina.dll을 로딩하여 사용자가 입력한 계정과 암호를 LSA에 전달
                  ▶ LSA(lsas.exe) : 계정과 암호를 검증하기 위해서 NTLM(암호화)모듈을 로딩하고 계정을 검증

                                         SRM이 작성한 감사로그를 기록
                  ▶ SAM : 사용자 계정정보(해시 값)에 저장, 리눅스의 /etc/shadow와 같은 역할
                  ▶ SRM : 사용자에게 고유 SID를 부여하고 SID에 권한을 부여

        ③ 윈도우 실행 프로세스 

            - 윈도우 운영체제 관련 프로세스
                  ▶ wininit.exe : 윈도우 시작 프로그램
                  ▶ services.exe : 윈도우 서비스를 관리
                  ▶ lsm.exe : (Local Session Manager) 시스템 관리 작업, 주요 함수 실행, 호스트 PC와 서버의 연결을 관리
                  ▶ lsass.exe : (Local Security Authority Subsystem Service)

                                   사용자 로그인 검사, 비밀번호 변경관리, 엑세스 토큰을 생성; Window Security Log를 작성
                  ▶ svchost.exe : 서비스를 관리하기 위한 프로세스
                  ▶ conhost.exe : 키보드, 마우스 입력 허용, 문자 출력, 콘솔 API 등 셸의 기본 기능을 수행

 

            윈도우 운영 체제 관련 프로세스는 c:\window\system32 폴더에 위치

        ④ 윈도우 사용자 계정 
            - 내장된 사용자 계정 : 관리자가 계정을 만들지 않더라도 자동으로 윈도우 서버 설치와 함께 생성되는 계정 
                  ▶ Users
                  ▶ Account Operators
                  ▶ Printer Operators
                  ▶ Server Operators

 

            - 유니버설 그룹 : 복수의 도메인 환경에서 상호 관련되어 있는 자원에 대한 허가를 부여할 때 주로 사용. 

                                  성능저하가 있을 수 있으므로 꼭 필요할 때만 사용
                  ▶ Administrators
                  ▶ Users
                  ▶ Guests
                  ▶ Backup Operators
                  ▶ Power User

 

        ⑤ NTFS 파일 시스템
            - NTFS 파일 시스템 : 기존의 FAT 파일 시스템을 개선하고 윈도우 서버용으로 사용하기 위해 개발된 시스템.

 

            - NTFS 파일 시스템 주요 특징
                  ▶ USN 저널
                  ▶ ADS(Alternate Data Stream)
                  ▶ Sparse 파일
                  ▶ 파일 압축
                  ▶ VSS
                  ▶ EFS
                  ▶ Quotas
                  ▶ Unicode
                  ▶ 동적 Bad 클러스터 할당
                  ▶ 대용량 지원

 

            - NTFS 파일시스템은 VBR, MFT, Data Area로 구성

                  ▶ VBR (Volume Boot Record)

                          → NTFS 파일 시스템의 제일 처음에 있는 것으로 부트섹터, 부트코드, NTLDR 위치 정보등의 

                             정보를 가지고 있다. VBR의 Boot Sector는 섹터 0번에 위치한다.
                  ▶ Master File Table

                          → NTFS의 메타정보, 파일 및 디렉터리 등의 정보를 관리하는 파일,

                             파일위치, 속성, 시간정보, 파일명, 크기 등의 정보를 가지고 있다.

         공유 폴더 
            - 자신의 컴퓨터에 있는 폴더를 다른 컴퓨터와 공유할 수 있는 기능

            - net share 명령어로 공유폴더를 확인

            - 윈도우 운영체제에는 설정하지 않아도 기본적으로 공유되는 폴더가 있다.(C$, ADMIN$, IPC$)
                  ▶ IPC$ - 네트워크 프로그램 간에 통신을 위해서 파이프를 사용하고 네트워크 서버를 원격 관리하기 

                               위한 용도로 사용한다.

 

            - 공유폴더는 정보보안에서 삭제를 권고한다.(악성코드 유포, 시스템 정보 획득 가능)

            - nmap도구를 통해 포트를 스캔하고 특정 공유폴더를 통해 공격을 수행할 수 있다.

            - 윈도우 SMB를 통해 열려있는 포트로 윈도우 정보를 알아낼 수 있고 이를 통해 다른 공격을 수행할 수 있다.

         레지스트리 
            - 마이크로소프트 윈도우 운영체제에서 운영체제 및 응용 프로그램 등에게 필요한 정보를 저장하고 

              관리하기 위한 계층형 데이터베이스 이다.

 

            - regedit.exe라는 프로그램을 통해서 관리하며 Key, Value, Data Type, Data로 이루어져 있다.
                  ▶ Key : 상위레벨과 하위레벨로 정의되어 있고, 레지스트리가 어떤 정보를 가지고 있는지를 나타낸다.
                  ▶ Value : Key의 이름
                  ▶ Data Type : Value의 데이터 형태
                  ▶ Data : Value의 데이터


            - 가장 상위레벨에 있는 레지스트리 키를 루트키 라고 한다.
            - systeminfo 명령어를 통해 시스템의 기본정보를 획득할 수 있는데, 

              레지스트리에서 해당 값들을 직접 확인할 수 있다.

         하이브 파일 
            - 레지스트리 정보를 가지고 있는 물리적인 파일을 의미
            - 레지스트리 관리 프로그램은 하이브 파일을 읽어서 보여주거나 변경한다. 

              하이브 파일은 일반 에디터로는 변경하는 것이 불가능하고 커널에 의해서 관리된다.
            - 하이브 파일은 SAM, SECURITY, SYSTEM, SOFTWARE, Default, NTUSER.DAT 등에 존재한다. 

              이러한 하이브 파일 목록을 하이브 셋이라고 한다.

         이벤트 로그 및 웹 아티팩트 분석 
             - 윈도우 이벤트 로그 : 윈도우 시스템을 사용하는 중에 발생되는 모든 내용을 볼 수 있다.
             - Event Viewer라는 관리도구를 통해 확인하고 .evt 확장자로 로그파일이 기록된다.

             -로그 종류
                  ▶ 응용 프로그램 로그 
                  ▶ 보안 로그
                  ▶ 시스템 로그
             - 웹 아티팩트 분석 : 사용자가 웹사이트를 이용한 흔적을 분석 하는 것
                  ▶ 캐시 데이터

                            → 다운로드 받은 파일, 아이콘 등이 있으며 캐시 인덱스에는 다운로드 URL, 다운로드 시간,

                                크기 등의 정보가 있다.
                  ▶ 히스토리 분석

                            → 사용자가 방문한 웹사이트 정보를 분석하는 것
                  ▶ 웹 브라우저 쿠키

                            → 자동으로 사용자 PC에 저장되는 작은 저장공간

                                host 정보, 경로, 수정시간, 만료시간 등의 값이 있다.

        ⑩ 바이러스와 악성코드
             - 바이러스는 컴퓨터 프로그램의 한 종류로 사용자 몰래 은닉하여 

               정상적인 프로그램이나 사용자의 데이터를 파괴하는 악성 프로그램이다.


             - 컴퓨터 바이러스와 악성코드는 혼동하여 사용되지만 가장 근본적인 차이점은 자기복제 여부이다.

               ★ 바이러스는 자기복제 기능이있음 ★


             - 세대별 컴퓨터 바이러스
                  ▶ 제1세대, 원시형 바이러스

                            → 일반적으로 아마추어 프로그래머가 개발

                                단순하고 코드의 변형이 없음(크기 일정), 주기억 장치에 상주해서 부트영역을 감염
                  ▶ 제2세대, 암호화 바이러스

                            → 컴퓨터 프로그램 일부 또는 전체를 암호화 시켜서 백신으로 확인 불가

                                (단, 암호화/복호화 방식이 일정함)
                  ▶ 제3세대, 은폐형 바이러스

                            → 자기 스스로 은폐가능, 다른 실행파일에 기생하여 해당 실행파일의 크기를 증가시킴,

                                파일크기가 변경되나 이전 상태를 백신에 보여줘 발견하기 어렵게 한다.
                  ▶ 제4세대, 갑옷형 바이러스

                            → 다양한 기법을 사용하여 은폐함, 백신으로 진단하기 어려움,

                                전문가 프로그래머에 의해서 개발, 진단이나 치료가 불가능하지는 않으나 어려움
                  ▶ 제5세대, 매크로 바이러스

                            → 엑셀, 워드와 같이 매크로를 사용하는 프로그램을 감염시키는 바이러스

                                전문 프로그래머가 아니어도 누구나 배포 가능

 

             - 감염대상에 따른 컴퓨터 바이러스
                  ▶ 부트 바이러스

                            → 부트섹터에 영향을 주는 바이러스

                                부트 섹터가 영향을 받으면 부팅이 되지 않거나 부팅시간이 오래걸림
                  ▶ 파일 바이러스

                            → 사용자의 일반 파일을 감염, EXE, COM 파일을 감염,

                                기생형, 겹쳐쓰기형, 산란형, 연결형 바이러스로 분류됨
                  ▶ 부트 및 파일 바이러스

                            → 부트섹터와 파일영역 모두 감염

 

             - Shellcode와 Heap Spray
                  ▶ Shellcode

                            → 작은 크기의 기계어 코드로 소프트웨어의 취약점을 이용하여 명령 셸을 실행시킨다.

                               어셈블리어로 작성되고 기계어로 번역되어 사용된다
                  ▶ Heap Spray

                            → 짧은 기계어 코드인 Shellcode를 Heap 영역에 뿌리는 것

                                Heap 영역에 임의적으로 shellcode를 삽입하여 실행하는 기법이다.

 

             - 버퍼오버플로우: 프로세스가 사용가능한 메모리 공간을 초과해서 발생하는 보안 취약점

                  ▶ C/C++에서 메모리 공간에 제약을 두지 않는 API를 사용할 때 발생

 

             - 경쟁조건

                  ▶ 다중 프로세스 환경에서 동시에 두개 이상의 프로세스가 수행될 때 발생하는 비정상적인 상태

                      임의의 공유자원을 여러 프로세스가 공유하여 경쟁상태를 발생



    (2) 인터넷 활용 보안

        ① 웹브라우저 보안
             - 검색 기록 / 쿠키 삭제 / 임시파일 삭제
             

             - 익스플로러에서는 보안 수준을 설정하기
                 ▶ 보통 이상으로 사용하고, 세부 설정 가능

             - 브라우저에서 개인정보를 수집하는 기술
                 ▶ 쿠키(Cookie) & 슈퍼쿠키(Super Cookie)
                 ▶ 비콘(Beacon ; Web Bug)
                 ▶ History Stealing
                 ▶ Fingerprint

             - HTTP(Hyper-Text Transfer Protocol) 프로토콜
                 ▶ 웹 상에서 파일(텍스트, 이미지, 등)을 주고 받기 위한 프로토콜로 TCP/IP와 관련된 프로토콜(80번 포트)
                 ▶ 한 번 접속해서, 정보 주고받고 접속을 끊어버리는 특이한 특징

                        ▷ 이 때문에 세션과 쿠키라는 걸 이용

                 ▶ HTTP 요청 방식
                        ▷ GET 방식 : 클라이언트가 서버로 전송하는 정보를 URL에 담는 방법
                        ▷ POST 방식 : 요청사항을 HTTP 헤더 안에 넣어서 서버로 전송하는 방법

                 ▶ HTTP 1.0
                        ▷ 한 번에 한 종류의 데이터만 받을 수 있음(이미지와 텍스트라면 총 두 번의 접속이 필요)
                        ▷ 요청 방식
                                 ⓐ GET : GET 방식으로 서버에 리소스(정보)를 달라고 요청
                                 ⓑ HEAD : GET방식과 유사하지만, 요청한 리소스가 아닌 Header만 채워서 응답
                                 ⓒ POST : POST 방식으로 서버에 리소스를 달라고 요청
                 

                  HTTP 1.1
                        ▷ 한 번에 이미지와 텍스트까지 받을 수 있음
                        ▷ 요청 방식
                                 ⓐ GET : 요청 받은 정보를 다운로드하는 메소드
                                 ⓑ HEAD
                                 ⓒ POST : 서버가 전송된 정보를 받아 들이고 서버에서 동작하도록 하는 메소드
                                 ⓓ OPTION : 서버가 요청한 리소스에서 어떤 요청방식들을 처리해주는지 알려줌
                                 ⓔ PUT : 서버에 요청한 리소스를 저장함
                                 ⓕ TRACE : 루프백 메시지를 위한 요청을 함
                                 ⓖ CONNECT 
                                 ⓗ DELETE : 명시된 리소스를 서버가 삭제할 것을 요청

                  HTTP 상태코드
                        ▷ 2xx : 성공
                                 ⓐ 200 : OK
                                 ⓑ 201 : 서버가 성공적으로 요청된 새 리소스를 생성(PUT 메소드인듯)

                        ▷ 3xx : 재전송
                        ▷ 4xx : 클라이언트 측 에러
                                 ⓐ 401 : 유효한 요청에 대해 서버가 응답을 거부(권한이없는 401과는 다름)
                                 ⓑ 403 : Forbidden
                                 ⓒ 404 : Not Found
                        ▷ 5xx : 서버 측 에러
                                 ⓐ 500 : 내부 서버 오류
                                 ⓑ 501 : 해당 메소드 인식 못하거나 기능이 없음



        ② 메일 클라이언트 보안
             - PGP (Pretty Good Privacy)
                  데이터 암호화와 복호화하는 프로그램인데, 전자 메일의 보안성을 높이기 위해 자주 사용
                  IETF에서 표준으로 채택한 PEM과 비교됨
                  수신 부인방지와 메시지 부인 방지 기능이 없음
                  메시지의 비밀성을 위해 공개키 암호기술을 사용(RSA, IDEA 등)
                  메시지의 무결성을 위해 메시지 인증을 사용
                  메시지의 생성, 처리, 전송, 저장, 수신 등을 위해 전자서명을 사용



    (3) 공개 해킹 도구에 대한 이해와 반응

        ① 트로이 목마

             - 정상적인 프로그램으로 위장하여 램에 상주하며 시스템 내부 정보를 빼돌리는 프로그램

             - 바이러스와 달리 직접 전파 등록이 없음

             - 대표적인 툴 : AOL4FREE.COM / Shark2 / NetBus / Back Orific

        ② 크래킹 
             - 루트킷(RootKit): 서버 내에 침투해서 백도어(관리자 레벨로 접근을 가능하도록 만드는 것)를 만들고 

                                     로그를 삭제하는 등의 패키지들
                  대표적으로 lrk5
                  루트킷을 찾아내는 프로그램은 안티루트킷(Anti-RootKit) : 대표적으로 Icesword

 

             - 패스워드 크랙(Password Crack)
                  Brute Force Attack / Dictionary Attack / Password Guessing / Rainbow Table 등의 공격 방법으로 크랙
                  대표적인 툴 : John the Ripper / pwdump / LOphtCrack / ipccrack / chntpw(to reset pw)

             - 포트 스캐닝(Port Scanning) (SAINT와 Nmap 정도만 알고 있어도 될듯)
                  다중 취약점 스캔 : SAINT / sscan2k / vetescan / mscan 등
                  특정 취약점 스캔 : cgiscan / winscan / rpcsan
                  은닉 스캔 : Nmap / stealthscan
                  네트워크 구조 스캔 : firewalk / Nmap
                  스캐닝 기법
                        ▷ Openning Scanning : TCP Connect Scanning
                        ▷ Half-Open Scanning : SYN Scanning
                        ▷ Stealth Scanning : FIN / X-MAS / NULL Scanning
                        ▷ More Advanced Scanning : Spoofed Scanning(??)
                  포트 스캐닝의 구분
                        ▷ TCP 포트 스캐닝 : 특정 Flag값을 설정한 뒤, 패킷을 보내고 그에 대항 응답으로 확인
                        ▷ UDP 포트 스캐닝
                                 ⓐ 포트가 열린 상태 : 아무런 응답 X
                                 ⓑ 포트가 닫힌 상태 : UDP 패킷이 목적지에 도달하지 못했다는 메시지
                                   ※ 패킷이 유실되도 아무런 응답이 없기에 신뢰성이 떨어짐

             - Nmap 사용법
                  스캔 타입
                        ▷ -sS : TCP Syn Scan
                        ▷ -sF / -sX / -sN : FIN / X-Mas / NULL Scan
                        ▷ -sU : UDP Scan
                        ▷ -sP : Ping Sweep
                        ▷ -b : FTP Bounce Attack
                  스캔 옵션
                        ▷ -P0 : Don't ping before scanning, ping으로 사전 조사 하는 과정을 뺌
                        ▷ -PT : ICMP Request Packet 보내고, 응답기다리는 대신에 TCP ACK를 보내 응답 기다림
                        ▷ -PS
                        ▷ -PB
                        ▷ -O : 운영체제 확인
                        ▷ -p 
                        ▷ -S  : Spoofing
                  예
                        ▷ #./Nmap -p 1-30,110,65535 192.168.1.1
                                 ⓐ 192.168.1.1의 1~30번, 110번, 65535를 스캔한다.

        ③ 키로그
             - 대표적인 툴 : Winhawk, Key~~로 시작되는 툴들

 


    (4) 도구활용 보안관리 

        ① 클라이언트 보안도구 활용
             - BlackICE
                  일종의 방화벽이라고 보면될 듯
                  외부에서 자신의컴퓨터에 접근하는 것을 탐지 / 제어하는 프로그램
                  침입 차단 / 어플리케이션 보호 / IDS 기능 제공

             - Snort
                  공개 네트워크 IDS
                  다양한 OS 지원 / Rule 설정가능

        ② 클라이언트 방화벽 운영
             - Windows 방화벽(ipsec)
             - Linux/Unix 방화벽(iptables)


[ 출처 ]

https://kit2013.tistory.com/209?category=288746 

http://jemwoo.blogspot.com/2018/08/2.html

을 참고하여 보완하고 수정한 글입니다.

반응형

댓글