본문 바로가기
정보보안기사, 정보보안산업기사

[정보보안기사/산업기사] 시스템 보안 과목 요약 정리

by 시스코킹 2020. 10. 12.
반응형

<시스템보안>

* 무차별 대입 공격 (Brute Force Attack)

-특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미

 

 

- 무차별 대입 공격 도구 (패스워드 크래킹 툴)

존 더 리퍼 (John the Ripper)

히드라 (THC Hydra)

메두사 (Medusa)

Cain and abel (스니핑도 사용하지만 사전공격과 무차별 대입공격으로 암호를 크래킹하는 도구입니다)

Wfuzz

Brutus

RainbowCrack

L0phtCrack

Pwdump

 

 

 

 

* RAID-0: 속도 향상만을 추구하는 스트라이핑 모델

* RAID-1: 안정성만을 추구하는 미러링 모델

* RAID-2: RAID 0과 같이 스트라이핑으로 구현하고, 오류 정정을 위한 Hamming code를 사용

* RAID-3: 스트라이핑 기술을 사용하여 디스크들을 구성하고, 별도의 디스크에 패리티 정보를 저장

* RAID-4: 블록 형태의 스트라이핑 기술과 패티리 사용

* RAID-5: 안전성과 속도 모두를 추구하는 방식, 가장 많이 쓰인다, 블록 스트라이핑과 분산된 패리티를 사용한다

* RAID-6: RAID 5와 비슷하지만 2차 패리티까지 포함하여 안정성을 더 높였다, 금융업이나 중요 데이터 스토리지 등에 사용된다.

 

 

* 운영체제의 주요 기능:

① 사용자와 하드웨어 간의 인터페이스를 정의한다.

② 오류 검사 및 복구 기능을 수행한다.

③ 사용자 간의 자원을 스케줄링하고 할당하는 기능을 수행한다.

 

 

* 운영체제의 5계층 (프-메-프-주-파)

프로세서 관리(1계층): 동기화 및 프로세서 스케줄링

메모리 관리(2계층): 메모리 할당 및 회수

프로세스 관리(3계층): 프로세스 생성,제거

주변장치 관리(4계층): 주변장치 상태파악

파일 관리(5계층): 파일의 생성과 소멸, 파일의 열기와 닫기

 

 

* 운영체제 발달 과정 (일-실-시-다-분)

일괄 처리 시스템(1950년대)

-필요한 정보를 모아 한꺼번에 처리하는 초기 정보처리 시스템

-현대에서도 배치 프로그램은 사용된다. 은행의 이자 정산, 학교의 성적 처리 등

 

실시간 처리 시스템(1960년대)

-입출력 장치의 개선으로 대화식으로 실시간 정보 처리 수행

-사용자가 필요한 연산을 바로 바로 입력하고 결과를 받아본다.

 

시분할 시스템(1960년대)

-다중 프로그래밍 시스템이라고도 한다.

-짧은 주기로 여러 프로그램을 번갈아가면서 실행하여 여러 사용자가, 여러 프로그램을 동시에 사용할 수 있게 함

-현대의 멀티 프로세싱, 멀티 스레드도 시분할 처리다.

 

다중처리 시스템(1980년대)

-하나메모리(주기억장치)복수연산장치(CPU)를 이용하여 작업을 처리하는 방식

-2코어, 4코어 등의 멀티 프로세서 시스템을 말한다.

 

분산 처리 시스템(1980년대)

-여러 컴퓨터를 네트워크로 묶어 높은 성능을 구현하는 방식

-클러스터링이 분산 처리 시스템에 해당된다.

* 원격지 운영체제(OS)를 탐지해 내는 방법

telnet, IP port, ftp 등을 이용한다.

nmap -O 옵션을 이용한다.

TCP의 초기 시퀀스 넘버를 확인한다.

HTTP GET과 서버의 포워드를 grep한다

 

 

* 버퍼링 (Buffering)

송수신지 간의 데이터 전송 속도 차이에 의한 병목 현상을 해결하기 위한 데이터 임시 저장 기술

 

버퍼링주기억장치

스레드 보조기억장치

 

 

* 스레드 (Thread)

스레드는 하나의 프로세스에 속하며, 여러 프로세스에 동시에 포함될 수 없다

스레드는 프로세스에서 제어를 분리한 실행단위이다

* 프로세스 스케줄링 기법

 

 

 

* 교착상태의 4가지 필요조건

-아래 4가지 조건이 모두 만족하면 데드락이 발생할 가능성이 있다.

-하나라도 만족하지 않으면 절대 발생하지 않는다.

 

 

* 상호 배제 (Mutual exclusion)

-한 리소스는 한번에 한 프로세스만이 사용 할 수 있음

 

* 점유와 대기 (Hold and wait)

-어떤 프로세스가 하나 이상의 리소스를 점유하고 있으면서 다른 프로세스가 가지고 있는 리소스를 기다리고 있음

 

* 비선점 (No preemption)

-프로세스가 테스크를 마친 후 리소스를 자발적으로 반환할 때 까지 기다림 (강제로 빼앗지 않는다)

 

* 환형 대기 (Circular wait)

-Hold and wait관계의 프로세스들이 서로를 기다림

 

 

* 교착상태의 방지법

* 방지 (Prevention)

할당 구조 측면에서, 교착상태가 발생할 수 있는 요구조건을 만족시키지 않게 함으로써 교착상태를 방지한다.

 

* 회피 (Avoidance)

리소스 할당의 측면에서, 교착상태가 발생할 가능성이 있는 자원 할당(unsafe allocation)을 하지 않는다.

대표적으로 은행원 알고리즘이 있다.

 

* 탐지 및 회복 (Detection and Recovery)

교착상태가 발생 할 수 있도록 놔 두고 교착상태가 발생 할 경우 찾아내어 고친다.

                       

 

 

* 끝나지 않아 - 교착

중지 - 인터럽트

프로세스 - 세마포어

쓰레드 - 뮤텍스

 

 

* 세마포어 (semaphore)

-두개의 Atomic한 함수로 제어되는 정수 변수를 이용한 교착 상태 해법

-다익스트라(E.J. Dijkstra)가 제안

-상호 배제의 원리를 보장하는 알고리즘

-여러 개의 프로세스가 동시에 그 값을 수정하지 못한다.

 

 

* 인터럽트 동작 순서

1. 인터럽트 요청

2. 프로그램 실행 중단: 현재 실행중이던 Micro operation 까지 수행한다.

3. 현재의 프로그램 상태 보존: PCB(Process Control Block), PC(Program Counter)

4. 인터럽트 처리 루틴 실행: 인터럽트를 요청한 장치를 식별한다.

5. 인터럽트 서비스 루틴 실행

-인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다.

-서비스루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행한다.

-인터럽트 서비스 루틴을 실행할 때 인터럽트 플래그(IF) 0으로 하면 인터럽트 발생을 방지할 수 있다.

6. 상태복구 : 인터럽트 발생 시 저장해둔 PC(Program counter)를 다시 복구한다.

7. 중단된 프로그램 실행 재개: PC의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.

 

 

*시스템의 전체적인 설정 정보를 담고 있는 레지스트리 파일은 %SystemRoot%\system32\config 폴더에 저장된다.

BCD-Template – 부팅 환경 설정 정보

COMPONENTS – 설치된 컴포넌트 정보

DEFAULT – 제어판, 키보드, 키보드 레이아웃과 같은 기본 정보

SAM – 로컬 계정과 그룹 정보

SECURITY – 시스템의 보안과 권한 관련 정보

SOFTWARE – 시스템 부팅과 관련 없는 전역 설정 정보

SYSTEM – 시스템 부팅에 필요한 전역 설정 정보

 

 

 

* 윈도우 암호 정책

-확인 방법:

시작 - secpol.msc - 엔터

 

 

* 윈도우 백업 복구 시에 사용하는 파일

user.dat

system.ini

system.dat

* 윈도우 암호 정책 목록

-암호 복잡성 만족 여부

-최근 암호 기억

-최대 암호 사용 기간

-최소 암호 길이

-해독 가능한 암호화를 이용해 암호 저장

 

 

 

* LSA (Local Security Authority) 윈도우의 인증 시스템

-모든 계정의 로컬 및 원격 로그인에 대한 검증 수행

-시스템 자원(파일)에 대한 접근 권한 검사

-계정명과 SID(Security ID)를 매칭하여 SRM이 생성한 감사 로그를 기록

-NT 보안의 중심 서비스 보안 서브시스템(Security Subsystem)이라고 불림

 

 

 

* SAM (Security Account Manager) 윈도우 보안계정관리자

-사용자 계정의 비밀번호를 관리한다.

-해시된 비밀번호는 한 번 더 암호화되어 저장된다.

-액티브 디렉터리(AD)의 원격 사용자 인증에 사용된다.

-파일 위치: %SystemRoot%/system32/config/SAM

-레지스트리 위치: HKLM/SAM

 

 

 

* SRM (Security Reference Monitor)

-SAM이 사용자의 계정과 패스워드의 일치여부를 확인하여 SRM에 알려주면, SRM은 인증된 사용자에게 SID(Security ID)를 부여

-SID를 기반으로 하여 파일이나 디렉터리에 대한 접근 허용 여부를 결정하고 이에 대한 감사 메시지를 생성

-SID 확인시 getsid라는 툴 필요

-일반적인 SID 구조

The SID for account NEWGENERATION \administrator isS-1-5-21-1801674531-839522115-1708537768-500

                                      

①해당 시스템이 윈도우 시스템임을 표시

②시스템이 도메인 컨트롤러이거나 단독 시스템(Stand alone system)임을 표시

③ 시스템의 고유한 숫자. 이 고유한 숫자는 시스템을 설치할 때 시스템의 특성을 수집하여 생성

④각 사용자별 숫자로 표현되는 고유한 ID

-관리자(Administrator) 500, Guest 계정은 501, 일반 사용자는 1000번 이상의 숫자 할당

 

 

 

* NTLM (NT Lan Manager)

-Challenge-Response Mechanism 인증 방식

-요청, 응답의 과정을 위해 사용자 암호를 요구한다.

이 후 서버는 클라이언트로부터 암호를 요구하지 않고 클라이언트를 식별할 수 있게 된다. 만약 클라이언트가 시스템 계정으로 실행 중이라면 인증 정보를 보낼 수가 없기 때문에 인증은 실패하게 된다.

 

 

 

* NTFS

특징:

- 사용자마다 다른 보안을 적용할 수 있다.

- 파일 단위까지 보안을 적용시킬 수 있다.

- 파일과 폴더에 개별적으로 권한을 설정할 수 있으며 폴더에 설정한 권한보다 파일에 설정한 권한이 우선한다.

- 시스템 폴더는 Administrators/Power Users 그룹만 수정 가능하다.

- 파일 단위로 계정이 언제 파일을 열어보거나, 열려다 실패했는지 알 수 있는 감사(Auditing) 기능이 있다.

- 기본 보안 설정은 Everyone그룹에 대해 모든 권한 허용이다.

- 윈도우NT 전용 파일시스템으로 다른 OS와 호환성이 떨어진다는 것이 단점이다.

- 이론적인 최대 파일 크기는 16EB이나 실제 윈도우 운영체제에선 기본 16TB, 최대 256TB까지만 사용 가능하다.

 

 

* NTFS에서 Sector_per_cluster로 정할 수 없는 것은?

- 2진수 아닌거 고르면 된다. (NTFS에서 Sector-per-cluster2의 제곱수만 가능하다_

(파티션 크기)  /  (클러스터 크기)

64 MB 이하  /  512 Byte 

65 MB - 128 MB  /  1 KB

129 MB - 256 MB  /   2 KB

257 MB - 8 GB  /  4 KB

8 GB - 16 GB  /  8 KB

16 GB 이상  /  16 KB

* 비트벡터(Bit Vector)

-파일시스템에서 가용공간 (Free Space)을 관리하기 위해 사용하는 방법

ㅇ 간편하며 연속적인 n개의 가용 블록을 찾는 데 효과적이다.

ㅇ 마이크로컴퓨터는 가능하지만 대형컴퓨터에서는 불가능하다.

ㅇ 하드디스크의 용량이 작을수록 유리하다.

 

 

* MFT (Master File Table):

-윈도우 NTFS에서 모든 파일들과 디렉터리에 대한 정보를 포함하고 있는 것

 

 

 

* OLE (Object Linking Embedded)

-Windows 운영체제에서 애플리케이션 사이에서 데이터를 공유하는 기술

-예를 들어 한컴 오피스에서 문서 작성 중 한글 내에서 그림판을 띄워 그림을 그린 후 그려진 그림파일을 반환하여 한글 문서 내 이미지로 바로 삽입할 수 있다.

 

 

 

 

* 윈도우 루트 키

* Master Key

-Hive파일에 저장되어 있는 키

 

HKEY_LOCAL_MACHINE  (HKLM)

-설치된 하드웨어를 구동시키는데 필요한 정보

 

HKEY_USERS  (HKU)

-유저들의 정보

 

* Derived Key

-Master Key를 토대로 재구성 되는 키. 메모리에만 존재한다.

 

HKEY_CLASSES_ROOT  (HKCR)

-파일의 각 확장자에 대한 정보와 프로그램 간 연결 정보

 

HKEY_CURRENT_USER  (HKCU)

-현재 시스템에 로그인하고 있는 사용자와 관련된 시스템 정보

-HKEY_USERS 보다 우선순위가 높음

-HCU에서 업데이트 된 내용이 HKU로 동기화

 

 

HKEY_CURRENT_CONFIG  (HKCC)

-시스템이 시작할 때 사용하는 하드웨어 프로파일 정보

-디스플레이 및 프린트 설정 정보

 

 

* 윈도우 로그온창에 시스템 종료 버튼을 삭제

HKLM\SOFTWARE\Microsoft\Windows

NT\CurrentVersion\WinlogonShutdownWithoutLogon 값이 '0' 일때

 

 

* 윈도우 net 명령어

net share : 서버의 모든 공유 리소스 확인 또는 제거

net user : 서버의 사용자 계정 확인 및 관리

net session : 서버에 현재 원격 로그인된 사용자 확인 또는 세션종료

net computer : 도메인 데이터베이스에서 컴퓨터를 추가하거나 삭제

 

 

* 윈도우 기본 공유폴더 삭제

net share Share_Dir /delete

 

 

* lsass.exe - Local Security Authority Subsystem Service (로컬 보안 인증 하위 시스템 서비스)

-시스템에 접속하는 유저들의 로그인을 검사하며, 비밀번호 변경을 관리하고, 엑세스 토큰을 생성하는 등 시스템의 보안 정책을 강화하는 역할을 하는 윈도우 기본 프로세스

-winlogon 서비스에 필요한 인증 프로세스를 담당한다.

 

 

* Windows는 관리 특성상 ADMN$, C$, D$, IPC$ 등을 기본적으로 공유한다.

 

* IPC$ Windows Server 초기 버전에서 해킹된 사례가 있다. (Null Session Share 취약점)

 

 

*휘발성이 가장 높은 저장장치는? 레지스터, 캐시

 

* 랜섬웨어의 특징

CryptoLocker는 중요 파일을 암호화하고 돈을 요구한다.

Browlock은 경찰로 위장하여 불법사이트 접속에 대한 벌금 납부를 유도한다.

돈을 지급하더라도 복구가 제대로 이루어지지 않는 경우가 많다.

 

 

* Petya Ransomware (페트야 랜섬웨어):

-골든아이

-MFT(Master File Table) 영역에 대한 암호화뿐만 아니라 MBR(Master Boot Record) 영역을 감염시켜 시스템 가동을 불가능하게 함

 

 

* Spectre (유령)

-하드웨어에 기반한 보안 취약점 및 공격

=분기 예측 및 추측 실행을 유도하여 다른 유저 프로그램의 메모리를 볼 수 있는 취약점

 

 

* 트로이 목마(Trojan) 특징 및 기능

패스워드 가로채기, 파일 파괴, 원격 조정

 

 

* 해커가 리눅스 시스템을 해킹하여 백도어 프로그램을 설치하였다.

만약 시스템이 재시작되어도 본인이 설치한 프로그램이 실행되도록 하고 싶다면 다음중 어떤 파일에 접근해야 하는가?

rc.d/rc.local

-리눅스 부팅 시 가장 마지막 단계에 실행되는 명령어 목록을 관리하는 파일

 

 

 

* 리눅스 부팅 레벨(Run Level)

-레벨0 : 시스템 종료 (halt)

-레벨1 : 단일 사용자 모드 (싱글 유저 모드) , 시스템 관리자인 root 만 사용, 원격 로그인 불가능

-레벨2 : NFS를 지원하지 않는 다중 사용자 모드

-레벨3 : 다중 사용자 모드 (Text 기반)

-레벨4 : 사용되지 않는 실행 모드 ( 사용자가 직접 정의하여 사용 가능)

-레벨5 : X windows 부팅. (GUI 환경)

-레벨6 : 시스템 재부팅 (Reboot)

 

 

 

* 메모리 영역 ( 코 데 힙 스 )

- code 영역

코드 자체를 구성하는 메모리 영역으로 HEX BIN파일 이 저장된다.

프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역이다.

 

 

- data 영역

전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장된다.

초기화 된 데이터는 data 영역에 저장되고,

초기화 되지 않은 데이터는 BSS (Block Stated Symbol) 영역에 저장된다.

프로그램이 실행 될 때 생성되고 프로그램이 종료 되면 시스템에 반환 된다.

함수 내부에 선언된 Static 변수는 프로그램이 실행 될 때 공간만 할당되고, 그 함수가 실행 될 때 초기화 된다.

 

 

- heap 영역

필요에 의해 동적으로 메모리를 할당 하고자 할 때 위치하는 메모리 영역으로 동적 데이터 영역이라고 부르며,

메모리 주소 값에 의해서만 참조되고 사용되는 영역이다.

이 영역에 데이터를 저장 하기 위해서 C malloc(), C++ new() 함수를 사용한다.

 

- stack 영역

프로그램이 자동으로 사용하는 임시 메모리 영역이다.

지역(local) 변수, 매개변수(parameter), 리턴 값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역이다.  재귀함수의 호출엔 Stack이 사용

함수 호출 시 생성되고, 함수가 끝나면 시스템에 반환 된다.

스택 사이즈는 각 프로세스마다 할당 되지만 프로세스가 메모리에 로드 될 때 스택 사이즈가 고정되어 있어, 런타임 시에 스택 사이즈를 바꿀 수는 없다.

명령 실행시 자동 증가/감소 하기 때문에 보통 메모리의 마지막 번지를 지정 한다.

 

 

* DEP (Data Execution Prevention)

-실행 방지 메모리 영역에서 코드가 실행되지 않도록 하는 윈도우 운영체제에 포함된 보안 기능

-효과:

버퍼 오버플로우, 힙스프레이 등 메모리 기반의 실행 공격을 예방할 수 있다.

 

 

 

 

 

* 버퍼 오버플로우 방어기법

스택가드(Stackguard)

-카나리(canary)라고 불리는 무결성 체크용 값을 복귀주소와 변수 사이에 삽입해 둔다.

 

스택쉴드(Stack Shield)

-함수 시작 시 복귀주소를 Global RET라는 특수 스택에 저장해 둔다.

-함수 종료 시 저장된 값과 스택의 RET값을 비교해 다를 경우 오버플로우로 간주하고 프로그램 실행을 중단한다.

 

ASLR(Address Space Layout Randomization)

-메모리 공격을 방어하기 위해 주소 공간 배치를 난수화 한다. RTL(return to libc)공격을 방어

-실행 시 마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정주소 호출을 차단한다.

설정:  echo 2 > /proc/sys/kernel/randomize_va_space

 

실행 불가능한 영역

-Solaris 2.7이상 버전에서 /etc/system 파일에 noexec_user_stack, noexec_user_stack_log 1 set하여 활성화시킨다

-택과 힙을 실행 불가능(No Executable)한 영역으로 만든다.

 

안전한 개발

-프로그램 개발 시 입력값에 대한 크기 검증을 적절히 수행하거나 취약하지 않은 함수만을 사용한다면 어느정도 방지할 수 있다.

 

 

* 버퍼 오버플로우 권장 함수 ( n ,fgets, vf)

strncat()   strncpy()   snprintf( )

fget()    fscanf()

vfscanf()   vsnprintf()

 

 

* 버퍼 오버플로우에 취약한 함수

sprintf()   strcpy()   scanf()

sscanf()

vscanf()   vsscanf()   vsprintf()

getbyhostname()   gets()

 

 

*  스택 버퍼 오버플로우 공격의 수행 절차

1. 공격 셸 코드를 버퍼에 저장한다.

2. 루트 권한으로 실행되는 프로그램 상에서 특정 함수의 스택 버퍼를 오버플로우 시켜서 공격 셸 코드가 저장되어 있는 버퍼의 주소로 반환 주소를 변경한다.

3. 특정 함수의 호출이 완료되면 조작된 반환 주소인 공격 셸 코드의 주소가 반환된다.

4. 공격 셸 코드가 실행되어 루트 권한을 획득하게 된다.

 

 

* 포맷스트링 (Format String)

-printf 등의 함수에서 문자열 입력 포맷을 잘못된 형태로 입력하는 경우 나타나는 버그이자 취약점이자 공격 기법

-포맷 스트링 익스플로잇은 프로그램을 충돌시키거나 악의적인 코드를 실행 시키는데 사용될 수 있음

 

 

* 포맷스트링 취약점의 직접적인 위험

-프로그램의 파괴

-프로세스 메모리 보기

-임의의 메모리 덮어쓰기

 

 

* 포맷 스트링 취약점 점검 툴

gdb

objdump

ltrace

 

 

* 힙 영역

-메모리에서 힙은 프로그램이 실행되면서 동적 할당하여 사용되는 메모리 영역이다.

-malloc과 같은 메모리 할당 함수 를 이용해 프로그램을 개발하였다면, 힙 영역을 오버플로우 시켜 특정 코드를 실행하도록 하는 공격이 가능하다.

 

 

* 힙 버퍼 오버플로우

-이 공격에 사용되는 메모리 영역은 malloc, free 등의 함수로 제어함

-쉘 코드를 사용하기 위하여 함수의 반환 주소를 단순히 덮어 쓰는 방법은 사용할 수 없고, 버퍼에 할당된 포인터 값을 덮어 쓰는 방법이 일반적으로 사용됨

 

 

* 가상메모리를 지원하는 운영체제에서 성능은 가상주소를 실주소로 변환하는 DAT(Dynamic Address Translation)에 의해 영향을 받는다. DAT 속도가 빠른 순서에서 느린 순서로 열거한 것은?

연관사상 > 직접/연관사상 > 직접사상

 

 

* 루트킷 특징

① 트래픽이나 키스트로크 감시

② 로그 파일 수정

③ 시스템 흔적 제거

 

 

* 안티 루트킷의 주요 기능

① 숨김 파일 찾기

② 수정된 레지스트리 찾기

③ 프로세스 보호 해제

 

 

* 무결성 검증용 보안도구

tripwire

fcheck

md5

 

 

* 특정 프로토콜 및 특정 SW나 특정 매커니즘에 대해 특정하여 스캔하는 도구

CGISCAN, WINSCAN, RPCSCAN

 

 

* 각종 보안 툴

SATAN : 네트워크 분석용 보안 관리자 도구

Nmap : 네트워크 보안스캐너

COPS : 시스템 보안 감시활동

Tripwire : 리눅스 내외부 시스템 보안

tcp_wrapper : 네트워크 접근 필터링

NESSUS : 보안취약점 점검 도구

SARA : 유닉스 기반 보안분석 도구

Nikto2 : 웹서버 스캔 취약점 분석도구

Sscan : 취약점 점검 도구

 

 

* Nessus

-미국 Tenable 사가 개발하여 무료로 배포하는 취약점 점검도구

-패스워드 취약점, TCP/IP 스택 DoS, 취약한 서버 설정 등 알려진 취약점을 점검한다.

-Text, HTML, LaTeX 등 다양한 형태로 보고서를 제공한다.

-기능:

① 열린 포트 스캔

② 악성 코드 점검

③ 웹 취약점 점검

 

 

* 파일 업로드 공격 (File Upload Attack)

-서버에 악의적인 영향을 끼칠 수 있는 파일(주로 웹셸)을 업로드한 후 실행한다.

 

 

* 파일 업로드 공격 대응

-첨부 파일을 체크하여 특정 종류의 파일만 첨부한다.

1단계: 파일 확장자를 확인하여 알려진 안전한 확장자만 업로드 가능하게 한다.

2단계: 파일 헤더를 확인하여 알려진 안전한 파일만 업로드 가능하게 한다.

-파일 업로드 시에 실행 파일은 파일 첨부를 불가능하게 한다.

-파일이 업로드되는 경로상의 실행 권한을 제거한다.

-임시 디렉토리에서 업로드된 파일을 지우거나 다른 곳으로 이동한다

 

 

* 웹 쉘

-공격자는 공격 대상 서버에 파일을 업로드한 후에,

웹을 이용하여 시스템 명령어를 수행하므로 네트워크 방화벽 등의 영향력을 받지 않고 서버를 제어 할 수 있는 공격

 

 

* 웹 방화벽 기능

-SQL Injection, Cross-Site Scripting(XSS)등과 같은 웹 공격 탐지 및 차단

-정보 유출 방지

개인정보나 기밀정보 등 정보유출 패턴을 탐지하고 차단

-부정 로그인 방지

SQL Injection, 파라미터 변조 등 정상적이지 않은 경로로 인증을 시도하는 패턴을 탐지하고 차단

 

 

* KISA CASTLE 웹 방화벽

 

 

* ATRONIXWebKnight: 윈도우의 대표적인 웹 방화벽

 

 

* ModSecurity (리눅스의 웹 방화벽)

- trustwave 사에 의해 제공, 아파치 웹서버, IIS 웹서버 등을 지원

 

-특징

-요청 필터링 (Request Filtering)

클라이언트로부터 웹 요청이 들어올 때, 웹서버 또는 다른 모듈들이 처리하기 전에 ModSecurity가 요청 내용을 분석하여 필터링한다.

 

-우회 방지 기술

경로와 파라미터를 분석하기 전에 정규화시켜 우회 공격을 차단한다.

, “//”, “\/”, “.”, “%00” 등 우회 공격용 스트링을 제거하고, 인코딩된 URL을 디코딩한다.

 

-HTTP 프로토콜 이해 (HTTPS Filtering)

엔진이 HTTP 프로토콜을 이해하기 때문에 전문적이고 정밀한 필터링을 수행할 수 있다.

 

-POST 페이로드(payload) 분석 (Audit Logging)

GET 방식 뿐만 아니라 POST 메소드를 사용해서 전송되는 컨텐츠도 분석 가능하다

 

 

 

* UTM (Unified Threat Management) 통합 위협 관리

-통합보안시스템, 통합위협관리시스템 등으로 해석되며, 주로 영문 약자인 UTM으로 부른다.

-방화벽, 침입 탐지·방지 시스템, 백신, 가상사설망 등 다양한 보안 장비를 하나의 장비로 통합한 것을 말한다.

-실무적으로 흔히 IDS·IDS와 방화벽이 결합된 형태를 말한다.

-경제성이 있고 보안 관리가 편해지지만 장애 발생시 보안기능에 심각한 영향을 미친다.

 

 

* 인터넷 익스플로러에서 보안 설정을 지정할 수 있는 웹 콘텐츠 영역

① 로컬 인트라넷

② 신뢰할 수 있는 사이트

③ 제한된 사이트

 

 

 

* index.dat

인터넷 익스플로어 History 로그가 저장되는 파일

 

 

 

* 분산처리시스템 목적

1. 자원공유: 각 시스템이 통신망을 통해 연결되어 있으므로 유용한 자원을 공유하여 사용할 수 있음

 

2. 연산속도향상: 하나의 일을 여러 시스템에 분산시켜 처리함으로써 연산 속도가 향상됨

 

3. 신뢰도 향상: 여러 시스템 중 하나의 시스템에 오류가 발생하더라도 다른 시스템은 계속 일을 처리할 수 있으므로 신뢰도 향상

 

4. 컴퓨터통신: 지리적으로 멀리 떨어져 있더라도 통신망을 통해 정보를 교환할 수있음

 

5. 투명성 (Transparency) : 사용자가 분산된 여러 자원의 위치 정보를 알지 못하고 마치 하나의 커다란 시스템을 사용하는 것처럼 인식하도록 하는 것

 

 

* 분산처리시스템 장,단점

장점: 통신 용이, 장치 공유, 데이터 공유, 중앙컴퓨터 과부하 줄임,

단점: 중앙 집중형 시스템에 비해 소프트웨어 개발이 어려움, 보안 문제 발생, 설계 복잡

반응형

댓글