Tech Juny

[01]-04 윈도우 Client 및 Server 보안 본문

정보보안기사 필기

[01]-04 윈도우 Client 및 Server 보안

태크주니 2021. 2. 15. 00:15

1. 윈도우 (Windows)

1) 윈도우 시스템

: 마이크로소프트에서 개발한 GUI 기반의 운영체제

- Plug & Play 기능 : 윈도우의 HAL 계층이 하드웨어를 인식하는 기능

  • 윈도우 파일 시스템
요소 내용
FAT
(Flie Allocation Table)
FAT16 - DOS와 윈도우 95이 첫 버전
- 최대 디스크 용량 2G
- NTFS, FAT로 변환 가능
FAT32 - 2G 이상 파티션 지원 및 대용량 디스크 지원
- NTFS로 변환 가능, But. FAT로 변환 X
NTFS 
(NT File System)
- 파일 암호화 및 파일 레벨 보안 지원
- 디스크 압축 및 파티션 단위로 쿼터
- FAT16이나 FAT32로 변환 불가
- 사용되는 운영체제 : 윈도우 NT, 윈도우 2000, 윈도우 XP

 

2) 윈도우 인증 시스템

- winlogon은 내부적으로 msgina.dll이라는 GINA 프로그램을 구동시켜 검증을 위해 ID를 LSA에 전달

- NTLM 값과 SAM에 저장된 NTLM 값을 비교하여 같으면 SRM에게 권한 부여

 

  • 윈도우 인증 프로세스 구성
구성 내용
winlogon 윈도우 로그인 프로세스
GINA (msgina.dll) Winlogon은 msgina.dll을 로딩하여 사용자 입력 ID를 LSA에 전달
LSA (lsas.exe) - ID/PW를 검증하기 위해 NTLM(암호화)모듈을 로딩하여 검증
- SRM이 작성한 감사로그 기록
SAM - 사용자 계정정보 해시값 저장
- 리눅스의 /etc/shadow 파일과 같은 역할
SRM 사용자에게 고유 SID 부여 및 SID 권한 부여

 

3) 윈도우 실행 프로세스

  • 윈도우 운영체제 관련 프로세스 세부 내역
프로세스 내용
wininit.exe 윈도우 시작 프로그램
services.exe 윈도우 서비스 관리
lsm.exe - 시스템 관리 작업, 주요 함수 실행, 호스트 컴퓨터와 서버의 연결 관리
- Local Session Manager
lsass.exe - LSASS (Local Security Authority Subsystem Service)
- 사용자 로그인 검사, 비밀번호 변경 관리, 엑세스 토큰 생성
- Windows Security Log 기록
svchost.exe 서비스를 관리하기 위한 프로세스
conhost.exe 키보드, 마우스 입력 허용, 문자 출력, 콘솔 API 등 셸의 기본 기능 수행

 

4) 윈도우 사용자 계정 

- 내장된 사용자 계정 : 관리자 계정 생성을 안해도 자동으로 생성 되는 계정

  • 유니버설 그룹 계정
구분 내용
Administrators - 해당 컴퓨터의 모든 관리 권한과 사용 권한을 가짐
- 기본적으로 사용자 계정과 Domain Admins를 포함
Users - 기본적인 권한 X
- 컴퓨터에서 생성되는 로컬 사용자 계정 포함
- Domain Users 글로벌 그룹이 구성원으로 포함
Guests 관리자에 의해 허락된 자원가 권한만 사용
Backup Operators Windows 백업을 이용해 모든 도메인 컨트롤러에 있는 파일과 폭터를 백업하고 복수할 수 있는 권한을 가짐
Power User - 로컬 사용자 계정을 생성 및  수정 가능
- 자원 공유를 멈출 수 있음
- 시스템 전체 권한 X, But. 시스템 관리 권한 O

 

2. NTFS 시스템

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

 

  • NTFS 파일 시스템의 주요 특징
특징 내용
USN 저널 - 저널링 기능
- 파일 시스템이 변경될 때 그 내요을 기록 및 복구 가능
ADS (Alternate Data Stream) - MAC 파일 시스템과 호환성을 위해 만든 공간으로 다중 데이터 스트림 지원
- 데이터 은닉 기술
Sparse 파일 파일 데이터가 대부분 0일 경우 실제 데이터 기록 없이 정보 기록
파일 압축 LZ77의 변형된 압축 알고리즘 지원
VSS (Volme Shadow Copy Service) 덮어써진 파일과 디렉터리 백업을 유지하여 복구 기능 제공
EFS (Encrypting File System) 대칭키 기법으로 파일 데이터 암호화
Quotas 사용자별 디스크 사용 용량 제한 가능
Unicode 다국어 지원
동적 Bad 클러스터 할당 Bad Sector 발생 클러스터를 자동 재할당
대용량 지원 2TB 이상 대용량 볼륨 지원

 

  • NTFS 파일 시스템
구분 내용
VBR (Volume Boot Record) - NTFS 파일의 제일 처음에 존재
- 부트 섹터, 부트코드, NTLDR 위치 등의 정보 보유
- VBR의 Boot Sector는 0번에 위치
MFT (Master File Table) - NTFS의 메타정보, 파일 및 디렉터리 정보 관리
- 파일 위치, 속성, 시간정보, 파일명, 크기 정보 보유
Data Area 데이터 영역

 

3. 공유 폴더 취약점

1) 공유 폴더 사용

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

- net share [폴더명] /delete : 공유 폴더 삭제

  • 공유 폴더 취약점

- 공유폴더를 통해서 악성코드를 유포하거나 시스템 정보를 획득할수 있음

- nmap -O -v 192.168.1.1 -> 포트스캐닝(-O : 운영체제 식별, -v : 상세 출력)

- 445 포트가 오픈되있는지 확인 (445 : 파일 및 프린터 공유프로그램 서비스 실행시 탐색되는 포트)

 

4. 레지스트리 (Registry)

1) 레지스트리

: 윈도우 운영체제에서 운영체제 및 응용 프로그램 등에 필요한 정보를 저장하고 관리하는 계층형 데이터베이스

- regedit.exe로 실행

- 계층형 데이터베이스

- Key, Value, Data Type, Data

- 루트 키 (Root Key) : 윈도우 레지스트리 키 중에서 가장 상위 레벨의 키

  • 루트 키 역할
루트 키 설명
HKEY_CLASSES_ROOT 피일의 각 확장자에 대한 정보와 파일과 프로그램 간의 연결에 대한 정보
HKEY_LOCAL_MACHINE 설치된 하드웨어와 소프트웨어 설치 드라이버 설정에 대한 정보
HKEY_USERS 사용자에 대한 정보
HKEY_CURRENT_CONFIG 디스플래이 설정과 프린트 설정에 관한 정보

 

2) 하이브(Hive) 파일

: 레지스트 정보를 가지고 있는 물리적인 파일

- 윈도우 레지스트 프로그램 (regedit.exe)는 하이브 파일을 읽어서 보여주는것으로 레지스트의 모든 정보는 하이브 파일이 보유

- 커널에 의해서 관리됨, 일반적인 에디터로 삭제 불가능

- C:\windows\system32\config 에 하이브 파일 존재

  • 하이브 파일 (Hive File)
하이브 파일 내용
SYSTEM 시스템 부팅에 필요한 시스템 전역 구성 정보
SOFTWARE - 시스템 부팅에 필요 없는 시스템 전역 구성정보
- 소프트웨어 정보
SECURITY - 시스템 보안정책과 권한 할당 정보
- 시스템 계정만 접근가능
SAM - 로컬 계정의 정보와 그룹정보
- 시스템 계정만 접근 가능
HARDWARE 시스템 하드위ㅔ어 디스크립션과 모든 하드웨어 장치 드라이버 매핑 정보 
COMPONETS 설치된 컴포넌트 관련 정보
BCD00000000 - 부팅 환경 데이터 관리
- 과거 윈도우 XP의 Boot.ini의 대체 품

 

3) 주요 윈도우 레지스트리 키

  • 윈도우 버전 정보를 가지고 있는 레지스트리 키

 - HKLM\SOFTWARE\Microsoft\windows NT\CurrentVersion

  • 컴퓨터 이름을 가지고 있는 레지스트리 키

- HKLM\SYSTEM\ControlSet00X\Control\ComputerName\ActiveComputerName

 

  • 윈도우 시작 프로그램 레지스트리 키

- 악성코드에 감염되면 시작프로그램에 등록을 시도하기 때문에 중요함

- autoruns 프로그램으로 확인 가능

  • 악성코드가 시작 프로그램 레지스트리 키를 이용해 공격하는 방법
    - 시작 프로그램의 백신 프로그램 미가동
    - 악성코드를 시작프로그램에 등록하여 시작될 때마다 악성코드 실행
    - 단순 등록 뿐만아니라 여러개로 나누어 은닉 등록 가능
  • 시작프로그램 레지스트리 키
구분 내용
Run 매번 시작 될때 마다 실행
RunOnce 시작 할때 한번
RunServices 서비스에 대한 시작프로그램

 

  • 최근 실행한 명령어 확인

- RunMRU 키 : 최근 실행한 명령어 정보 보유

- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU 에 존제

 

5. 이벤트 로그 및 웹 아티팩트 분석 (Web Artifact Analysis)

1) 윈도우 이벤트 로그 (Event Log)

- 이벤트 뷰어 (Event Viewer) 관리 도구로 확인

- *.evt 확장자로 로그파일 저장

- 보안 관리자는 이벤트 로그파일 크기 변경 가능

 

  • 윈도우 로그 종류
윈도우 로그 유형 내용
응용 프로그램 로그 프로그램 개발자에 의해 이벤트를 정의하고 분류하여 응용 프로그램에 기록할 이벤트들이 수록된 자료
보안 로그 - 관리자에 의해서 보안 로그에 기록된 이벤트 유형을 기반
- 로그온 횟수, 로그인 오류 정보, 파일 생성 및 다른 개체 생성, 파일 열기, 파일 삭제 등 리소스 사용관련 이벤트 기록
시스템 로그 윈도우 시스템에서 사전에 정한 윈도우 시스템 구성요소에서 기록한 이벤트 자료

 

2) 웹 아티팩트 분석 (Web Artifact Analysis)

: 사용자가 웹 사이트를 이용한 흔적을 분석

  • 웹 아티팩트 분석 대상
구분 내용
웹브라우저 캐시 다운로드 받은 이미지 텍스트 파일, 아이콘 등
히스토리 분석 웹 사이트 접속 정보(방문 URL, 방문시간, 방문 횟수, 사이트 제목)를 월별, 일별 방문기록 저장
쿠키 정보 방문시 자동 저당 되는 저장 공간으로 호스트 정보, 경로, 수정시간, 만료시간 등의 값이 있음

 

  • 인터넷 익스플로어에 대한 아티팩트 수집 데이터

- Windows XP, 7 : index.dat

- Windows 10 : WebCachev01.dat or WebCacheV24.dat

 

6. 바이러스와 악성코드

1) 세대별 컴퓨터 바이러스

세대별 바이러스 설명
1세대 원시형 바이러스
(Primitive Virus)
- 단순 분석이 쉬움
- 고정된 크기
- 주기억장치에 상주하여 부트 영영 감염
- Ex) 돌(Stonde) 바이러스, 예루살렘(Jerusalem) 바이러스
2세대 암호화 바이러스
(Encryption Virus)
- 컴푸터 프로그램 일부 또는 전체를 암호화 시켜서 백신으로 감염 탐지 어렵게함
- 단, 암호화 방식이 일정해서 복호화 방식도 일정
- Ex) 폭포(Cascade) 바이러스, 느림보(Slow) 바이러스
3세대 은폐형 바이러스
(Stealth Virus)
- 스스로 은폐하는 바이러스
- 다른 실행파일에 기생하여 용량 크기를 증가 시킴
- 파일 크기가 변경 되기 때문에 발견이 쉬움
- Ex) 맥가이버 (MacGyver) 바이러스, 브레인(Brain) 바이러스, 512 바이러스
4세대 갑옷형 바이러스
(Armor Virus)
- 다양한 암호화 기법을 사용하여 은폐 -> 백신 진단 어려움
- 전문 프로그래머에 의해서 개발
- 진단이나 치료가 불가능은 아님
- Ex) 다형성(Polymorphic) 바이러스, 자체 변형(Self-encryption) 바이러스, Blue Sky, Whale 
5세대 매크로 바이러스
(Macro Virus)
- 엑셀이나 워드처럼 매크로 명령을 사용하는 프로그램을 주로 감염
- 전문 프로그래머가 아니여도 쉽게 만들고 배포 가능
- Ex) Melisa, Laroux, Nimda 바이러스

 

  • 감염 대상에 따른 바이러스
  •  부트 바이러스 : 부트 섹터에 영향을 주는 바이러스
    - Ex) 브레인 바이러스, 미켈란젤로 (Michelangelo) 바이러스

  • 파일 바이러스 : 사용자가 사용하는 파일에 감염되는 바이러스
    - Ex) 기생형 바이러스, 겹쳐쓰기형 바이러스, 산란형 바이러스 , 연결형 바이러스

  • 부트 및 파일 바이러스 : 부트 섹터와 파일 영역 모두 감염시키는 바이러스
    - Ex) 게킬라, 나타스, 침입자 바이러스

 

2) 윈도우 DDE 취약점 공격

  • 윈도우 DDE (Dynamic Data Exchange)

: 윈도우에서 애플리케이션 간 데이터를 전송하기 위한 프로토콜

- 취약점은 DDE의 정상적인 기능을 악용한 것으로 MS Word의 경우 문서를 열때 자동 연결 업데이트를 해제하면 방어 가능

- Word 같은 문서를 저장하고 열때 자동으로 프로그램을 실행 시켜 공격

- But. MS Word 옵션에서 "문서를 열때 자동 연결 업데이트" 옵션을 체크 해제하여 방어 가능

 

3) Shellcode와 Heap Spray

  • Shellcode

: 짧은 기계어 코드

- 어셈블리어로 작성 되며 기계어로 번역되어 사용

  • Heap Spray

: Shellcode를 Heap 영역에 임의적으로 삽입 후 실행시켜 공격

 

# ASLR (Address Space Layout Randomization) : 실행 파일이 메모리에 로드될때 항상 동일한 주소를 갖게되면 공격에 취약하여 해당 주소에 악성코드 삽입이 쉬움

-> 윈도우 Vista부터는 메모리의 주소를 항상 동적으로 실행

  •  리눅스에서도 기본 주소를 동적으로 할당 가능

- sysctl -w kernel.ramdomize_va_space=0 -> 고정 주소

- sysctl -w kernel.ramdomize_va_space=1 -> 동적 주소

 

4. 버퍼 오버플로우 (Buffer Overflow)

: 프로세스가 사용 가능한 메모리 공간을 초과해서 발생되는 보안 취약점

- C나 C++로 개발 할때 공간에 제한을 두지 않는 API를 사용해서 발생

- 프로세스가 사용하는 메모리 공간은 Stack, Heap, Data, Text 4개로 나눔

 

  • 스텍(Stack) 영역

- 프로그램 함수 내에서 사용하는 지역변수가 저장

- 함수를 호출하는 경우 되돌아오는 복귀주소를 보유

- 함수 인자 값 보유

 

  • 힙(Heap) 영역

- 프로그램 실행 중 메모리를 동적으로 할달하는 경우

- 포인터(*) 변수 선언 

- malloc( ) 함수 선언

- free( ) 함수를 통해 할당 해제

 

  • 데이터(Data) 영역

- 전역변수 선언

- 정적변수 선언

- 데이터 영역에 변수가 선언되면 자동 초기화

 

  • 텍스트(Text) 영역

- 읽기만 가능한(Read Only) 메모리 영역

- 프로그램 코드 저장

 

  • 스텍 버퍼오버플로우 공격 (Stack Buffer Overflow Attack)

: 스텍에 저당되어 있는 복귀주소가 지역변수에 의해서 침범 당하는 공격

- 길이 제한 함수를 사용하여 예방 [ strncat( ), strncpy( ), fgets( ), fscanf( ), vfscanf( ), snprintf( ), vsnprintf( ) ]

 

  • 버퍼 오버런 (Buffer Overrun)

: 메모리 공간에 할당된 공간보다 더큰 데이터를 입력하여 오류 유발하여 공격

 

  • 힙 버퍼 오버플로우 공격 (Heap buffer Overflow Attack)

: 힙 영역은 하위 주소에서 상위 주소로 메모리를 할당한다 이때 경계값을 검사하지 않고 메모리를 사용하면 경계를 초과하는 취약점으로 공격

- 힙 영역은 동적으로 할당되는 공간이 저장

 

5. 경쟁조건 (Race Condition)

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

- 임의의 공유자원을 여러 개의 프로세스가 경쟁하여 발생

- setuid와 심볼링 링그를 사용하여 백도어(Backdoor) 프로그램으로 공격

 

6. APT 공격

: 특정 기법 및 조직을 대상으로 가양한 공격 기법을 사용하여 지속적으로 공격을 수행하는 행위

- 사회관계망 서비스를 사용하여 정보수집, 악성코드 배포 등 지속적을 공격 수행

구분 내용
Zero Day Attack 소프트웨어 패치 전에 취약점을 이용한 공격
Mail APT 악성코드를 메일에 첨부하여 발송하여 정보 획득
백도어 APT 포적에 침투 후 백도어 설치 및 재 침입 유입경로 확보

# 바이너리 디핑 (Binary Diffing) : Zero Attack 취약점을 찾을 수 있는 기법

 

  • APT 공격 단계

① 침투 -> ② 탐색 -> ③ 수집/공격 -> ④ 유출

'정보보안기사 필기' 카테고리의 다른 글

[02]-06 네트워크 활용(TCP/IP)  (0) 2021.02.17
[02]-05 네트워크 일반  (0) 2021.02.16
[01]-03 리눅스 서버 보안  (0) 2021.02.13
[01]-01 운영체제 이해 및 관리  (0) 2021.02.02
Comments