본문 바로가기

자격증/정보보안기사 - 시스템보안

윈도우 클라이언트 및 서버 보안

728x90

윈도우 시스템

-- 윈도우 운영체제 --

Plug & Play 기능

하드웨어를 표준화된 인터페이스를 통해 개발하면 윈도우의 HAL계층이 하드웨어를 인식하는 기능

 

-- 세부 내용 --

HAL : 새로운 하드웨어가 개발되어 시스템에 장착되어도 드라이버 개발자가 HAL표준을

준수하면, 하드웨어와 시스템 간 원활한 통신이 가능

IO Manager : Manager에게 작업을 분담시키고 하드웨어 제어

Object Manager : 시스템 입/출력 제어, 장치 드라이버 사이에서 메세지 전달

응용 프로그램이 하드웨어와 통신할 수 있는 통로 제공

Security Reference Manager : 데이터 및 시스템 자원의 제어를 허가/거부

Process Manager : 프로세스 및 스레드를 생성하고 요청에 따른 작업 처리

Local Procedure Call : 프로세스 간 통신이 필요한 경우 이를 처리하는 장치

Virtual Memory Manager : 응용 프로그램 요청에 따라 RAM 메모리를 할당, 가상 메모리의 Paging 제어

Win32/64 Sub System : 윈도우 기본 서버 시스템

POSIX : 유닉스 운영체계에 기반을 둔 일련의 표준 운영체계 인터페이스

Security Sub System : 사용자가 로그인 시 데이터를 보호하고 OS가 이를 제어하도록 만든 서브 시스템

 

-- FAT 와 NTFS --

NTFS

대용량 파일과 긴 파일명, 압축, 저널링 정보를 통한 오류 처리 지원, FAT16/32로 변환 불가

파일 암호화 및 파일 레벨 보안, 사용되는 OS -> 윈도우 NT, 윈도우 2000, 윈도우 XP

 

FAT

DOS를 기반으로 하는 파일 시스템, 작은 파일 시스템에 사용

-- 종류 --

FAT16

DOS와 윈도우 95의 첫 버전, NTFS와 FAT로 변경 및 변환 가능

FAT32

NTFS로 변환 가능, FAT 변경 불가, 사용되는 OS -> 윈도우 95 OSR2, DNLSEHDN 2000, 윈도우 XP

 

윈도우 인증 시스템

winlogon은 내부적으로 msgina.dll이라는 GINA 프로그램을 구동시키며 검증을 위해 아이디를 LSA에 전달한다.

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

-- 인증 프로세스 구성요소 --

Winlogon : 윈도우 로그인 프로세스

GINA( msgina.dll ) : Winlogon은 msgina.dll을 로딩하여 사용자가 입력한 계정과 암호를 LSA에게 전달

LSA( lsas.exe ) : 계정과 암호를 검증( NTLM모듈( 암호화 모듈 )을 로딩하고 계정을 검증 )

SRM이 작성한 감사로그 기록

SAM : 사용자 계정정보( 해시 값 )에 저장

사용자 로그인 정보와 SAM 파일에 저장된 사용자 패스워드 정보를 비교해 인증 여부 결정

SRM : 사용자에게 고유 SID를 부여하고 SID에 권한 부여

 

-- 인증 과정 --

1. 로컬 또는 원격으로 Windows에 로그인

2. LSA에 접근

3. LSA에서 인증 패키지를 결정하고, 로그인에 필요한 자격 정보를 인증 패키지에 전달

4. 인증 패키지가 인증 여부 확인

5. LSA에 인증 여부 전달

6. 성공적으로 인증 되었다면 Logon

 

윈도우 운영체제 관련 프로세스 세부 내역

Wininit.exe : 윈도우 시작 프로그램

services.exe :  윈도우 서비스를 관리

lsm.exe : Local Session Manager, 시스템 관리 작업, 주요 함수 실행, 호스트 컴퓨터와 서버의 연결 관리

lsass.exe : LSASS( Local Security Authority Subsystem Service ), 사용자 로그인 검사, 비밀번호 변경 관리

Window Security Log 작성

svchost.exe : 서비스를 관리하기 위한 프로세스

conhost.exe : 키보드/마우스 입력 허용, 문자 출력, 콘솔 API 등 셸의 기본 기능 수행

 

윈도우 사용자 계정

-- 내장된 사용자 계정 --

관리자가 계정을 만들지 않더라도 자동으로 윈도우 서버 설치와 함께 생성되는 계정

구분 설명
User 기본적인 권한은 가지고 있지 않지만 Domain Users 글로벌 그룹이 구성원으로 포함되어 있음
Account Operators 서버 관리자를 사용하여 컴퓨터를 도메인 추가 가능하며, 사용자 계정, 그룹의 생성 및 삭제, 수정할 수 있는 권한 가짐
Printer Operators 도메인 컨트롤러에 있는 프린터를 생성 및 관리
Server Operators 도메인 컨트롤러에 있는 자원을 공유하거나 폴더를 백업하고 복구

-- 유니버셜 그룹 계정 --

복수의 도메인 환경에서 상호 관련되어 있는 자원에 대한 허가를 부여할 때 주로 사용

구분 설명
Administrators 해당 컴퓨터의 모든 관리 권한과 사용 권한 가짐, 사용자 계정과 Domain Admins를 포함
Users            기본적인 권한은 갖지 않음, 컴퓨터에서 생성되는 로컬 사용자 계정 포함           Domain Users 글로벌 그룹이 구성원으로 포함
Guests 관리자에 의해 허락된 자원과 권한만을 사용하여 네트워크 자원에 접근 가능
Backup Operators Windows 백업을 이용하여 모든 도메인의 컨트롤러에 있는 파일과 폴더를 백업하고 복구할 수 있는 권한이 있음
Power Users 컴퓨터에서 로컬 사용자 계정을 생성/수정 할 수 있는 권한을 가짐, 자원을 공유하거나 멈춤    시스템에 대한 전체 권한은 없지만 시트넴을 관리할 수 있는 권한이 부여된 그룹

 

NTFS 시스템

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

-- 목적 --

하이 엔드 시스템 및 파일 서버에 특히 유용한 안정성

-> 하이 엔드 시스템 : 비슷한 기능을 가진 제품군 중에서 기능이 가장 뛰어나거나 가격이 제일 비싼 제품

추가 기능을 위한 플랫폼

POSIX 요구 사항 지원

FAT 및 HPFS 파일 시스템의 제한 제거

 

-- HPFS --

FAT에 비해 디렉터리에 대한 보다 많은 정보를 보유한다.

특성 파일에는 수정, 생성, 액세스 날짜와 시간에 대한 정보가 포함된다.

 

-- NTFS 파일 시스템의 주요 특징 --

USN 저널 : 저널링 기능을 제공, 파일 시스템이 변경될 때 그 내용을 기록하여 복구 할 수 있음

-> 저널링 : 팩업 및 복구 능력

ADS : MAC 파일 시스템과 호환성을 위해서 만든 공간, 다중 데이터 스트림 지원

Spare 파일 : 파일 데이터가 대부분 0일 경우 실제 데이터 기록 없이 정보를 기록하는 기능

파일 압축 : LZ77의 변형된 데이터 압축 알고리즘을 지원

-> LZ77 : 반복적으로 나오는 문자열을 압축

VSS : 덮어써진 파일과 디렉터리 백업을 유지하여 복구 기능을 지원

EFS : 대칭키 기법으로 파일 데이터를 암호화

Quotas : 사용자별 디스크 사용용량을 제한할 수 있음

Unicode : 다국어 지원

동적 Bad 클러스터 할당 : Bad Sector가 발생한 클러스터를 자동으로 재할당

-> Bad Sector : 불량 섹터

대용량 지원

 

-- 데이터 은닉 기술( ADS ) --

NTFS 파일 시스템에서 적용 가능한 기술

-- 목적 --

MacOS 파일 시스템과 데이터 호환성을 위해 사용

 

-- 필요한 것 --

CMD, echo명령어

 

-- 생성 방법 --

1. CMD창을 연다.

2. 바탕화면 디렉토리로 이동한다.

3. echo 문자열 > 저장할txt파일:키

-- 확인 방법 --

 

-- NTFS 파일 시스템 구조 --

VBR : NTFS 파일 시스템의 제일 처음에 위치, 부트섹터/부트코드/NTLDR 위치 등의 정보를 가짐

VBR의 Boot Sector은 섹터 0번에 위치

MFT : NTFS의 메타정보/파일/디렉터리 등의 정보를 관리하는 파일

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

 

윈도우 폴더 구조

구성 명 세부 내용
Cookies 웹 사이트 방문 시 저장되는 쿠키 정보
Media 윈도우 웨이브 파일과 미디어 파일이 들어 있는 폴더
Repair 마지막으로 성공한 구성으로 부팅할 때 사용하는 레지스트리 정보가 저장
Recent 최근 접근한 문서 및 폴더의 링크 저장
Local Settings 응용 소프트웨어 데이터, History 기록 및 임시 파일 저장
NetHood 네트워크 환경 항목에 대한 바로가기
System32 윈도우의 핵심인 동적 링크 라이브러리 및 드라이버 포함
System32\Config 윈도우 레지스트리 파일 저장
System32\Dllcache 윈도우 시스템 폴더를 백업해 놓은 폴더

공유 폴더 기능

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

윈도우 탐색기에서 마우스 오른쪽 버튼을 눌러 생성 가능

-- 생성 확인 --

CMD 창에서 net share 명령어 입력

 

-- 삭제 --

CMD 창에서 net share 공유폴더명 \delete

 

-- 취약점 --

공유 폴더를 통해 악성코드를 유포하거나 시스템 정보를 획득 가능하다.

 

레지스트리

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

계층형 데이터베이스이다.

-- 윈도우 레지스트리 정보를 확인하는 방법 --

regedit.exe라는 레지스트리 관리 프로그램 실행

 

-- 구성 --

계층형 데이터베이스로 Key, Value, Data Type, Data로 이루어져 있음

키( 파란색 네모 ) : 상위레벨에서 하위레벨 구조로 정의, 레지스터가 어떤 정보를 가지고 있는지 나타냄

Value, Data Type, Data로 구성되어 있음

루트 키( 빨간색 네모 ) : 레지스트리 키 중에서 가장 상위 레벨에 있는 레지스트리 키

-- 루트 키 역할 --

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

HKEY_LOCAL_MACHINE : 설치된 하드웨어와 소프트웨어 설치 드라이버 설정에 대한 정보

HKEY_USERS : 사용자에 대한 정보

HKEY_CURRENT_CONFIG : 디스플레이 설정과 프린트 설정에 관한 정보

 

-- 주요 레지스트리 키 --

윈도우 시작 프로그램에 관련된 레지스트리

-> 윈도우가 악성코드에 감염되면 악성코드가 계속 실행되도록 하기 위하여 시작 프로그램에 등록을 시도하기 때문

-> Autoruns 프로그램으로 확인가능

 

RunMru

최근 실행한 명령어 정보 확인

 

하이브 파일

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

c:\windows\system32\config 디렉토리에 존재

하이브 파일 설명
SYSTEM 시스템 부팅에 필요한 시스템 전역 구성정보를 가지고 있음
SOFTWARE 시스템 부팅에 필요 없는 시스템 전역 구성정보로 소프트웨어 정보를 가지고 있음
SECURITY 시스템 보안정책과 권한 할당 정보로 시스템 계정만 접근 가능
SAM 로컬 계정 정보와 그룹정보로 시스템 계정만 접근 가능
HARDWARE 시스템 하드웨어 디스크립션과 모든 하드웨어의 장치 드라이버 매핑 정보를 가지고 있음
COMPONENTS 설치된 컴포넌트와 관련된 정보 관리
BCD00000000 부팅 환경 데이터를 관리하는 것은 과거 윈도우 XP의 Boot.ini가 없어지고 대체됨

RegBack : 하이브 파일에 대한 백업 디렉토리

 

윈도우 이벤트 로그

시스템을 사용하는 동안 발생되는 모든 내용을 발생시간 순으로 기록하는 로그파일

-> 이벤트 뷰어라는 관리도구를 이용하여 확인 가능

-> 로그파일은 확장자가 *.evt 로 기록

-> 이벤트 로그는 윈도우에서 발생되는 로그파일을 계속해서 기록하는 것이 아니라 일정한 크기가 되면

덮어쓰는 형태로 기록된다.

 

-- 이벤트 로그파일 크기 확인 --

-- 이벤트 로그 확인 --

-- 윈도우 로그 종류 --

윈도우 로그 유형 내용
응용 프로그램 로그 프로그램 개발자에 의해서 이벤트를 정의하고 분류하여 응용 프로그램에 기록할 이벤트들이 수록된 자료
보안 로그

        관리자에 의해서 보안 로그에 기록된 이벤트 유형을 지정하고, 보안 로그에 기록됨

로그온 횟수, 로그인 오류 정보, 파일 생성 및 다른 개체 만들기, 파일 열기 및 삭제 등의 리소스 사용관련 이벤트 기록            

시스템 로그 윈도우 시스템에서 사전에 정한 윈도우 시스템 구성요소에서 기록한 이벤트 자료

-- 윈도우 감사 이벤트 유형 --

Audit Application Group Management

애플리케이션 그룹 관리 작업이 발생될 때 감사 이벤트 생성 결정

Audit Computer Account Management

컴퓨터 계정 생성, 수정, 삭제가 될 때 감사 이벤트가 발생하는지 설정

Audit Distribution Group Management

분배 그룹 관리 업무에 대한 감사 이벤트가 발생되는지 결정

Audit Other Aaccount Management Events

분배 그룹 관리 업무에 대한 감사 이벤트가 발생되는지 결정

Audit Security Group Management

보안 그룹 관리 업무에 대한 감사 이벤트를 설정

Audit User Account Management

사용자 계정 관리 업무에 대한 감사 이벤트가 발생되는지 결정

 

웹 아티팩트 분석

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

( 웹 브라우저는 종류가 다양하므로 웹 아티팩트 분석을 할 때에도 웹 브라우저에 맞게 로그 데이터를 가져와서 분석 )

-- 분석 대상 --

웹 브라우저 캐시( 캐시 데이터 + 캐시 인덱스 정보 )

캐시 데이터 : 다운로드 받은 이미지 텍스트 파일, 아이콘 등

캐시 인덱스 : 다운로드 URL, 다운로드 시간, 데이터 크기 등의 정보

 

히스토리 분석

사용자가 방문한 웹 사이트 접속 정보를 저장하는 것( 방문 사이트 URL, 방문 시간, 방문 횟수, 사이트 제목 )

 

웹 브라우저 쿠키

웹 사이트 방문 시 자동으로 사용자 PC에 저장되는 작은 저장 공간

( 자동 로그인 기능, 자주 조회하는 물건, 호스트 정보, 경로, 수정시간, 만료시간 등 )

 

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

Window XP, 7 등 Windows 10( IE 10 )
Index.dat WebCacheV01.dat / WebCacheV24.dat
캐시, 히스토리, 쿠키 등의 정보가 각각 나누어져 별도의 Index.dat 파일로 구성됨 웹 아티팩트 파일이 통합되어서 관리됨

 

컴퓨터 바이러스

컴퓨터 프로그램의 한 종류로 사용자 몰래 은닉하여 정상적인 프로그램이나 사용자의 데이터를 파괴하는 악성 프로그램

바이러스 유형 내용
1세대 원시형 바이러스

프로그램 구조가 간단하고 분석이 쉽다.

일반적으로 주기억장치에 상주해서 부트영역이나 파일을 감염시키는 특성이 있다.

ex. 돌 바이러스, 예루살렘 바이러스

2세대 암호화 바이러스

컴퓨터 프로그램의 일부 또는 전체를 암호화 시켜서 백신으로 바이러스 감염 여부를 확인할 수 없게 한다.( 암호화 방식이 일정해서 복호화 방식도 일정 )

ex. 폭포 바이러스, 느림보 바이러스

3세대 은폐형 바이러스

감염된 부분을 읽으면 감염되기 전의 내용을 보여주어서 은폐시킨다.

ex. 맥가이버 바이러스, 브레인 바이러스, 512 바이러스 

4세대 갑옷형 바이러스

다양한 암호화 기법을 사용하여 은폐하는 기법을 사용하기 때문에 찾기 어렵다.

ex. 다형성 바이러스, 자체 변형 바이러스

5세대 매크로 바이러스

엑셀이나 워드처럼 매크로 명령을 사용하는 프로그램을 감염시키는 바이러스

ex. 라룩스 바이러스, Nimda 바이러스, Melisa 바이러스

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

부팅 : 컴퓨터 전원을 켜면 디스크에 저장되어 있는 운영체제를 메모리로 로드

부트 섹터 : 부트 정보를 가지고 있는 디스크 영역

부트 바이러스

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

부트 섹터에 바이러스가 감염되면 컴퓨터가 부팅되지 않거나 부팅 시간이 오래 걸리게 된다.

ex. 브레인 바이러스, 미켈란젤로 바이러스

 

파일 바이러스

사용자가 사용하는 일반파일에 감염되는 바이러스

윈도우의 실행파일인 COM, EXE 파일을 감염시킨다.

파일 바이러스 내용
기생형 바이러스

원래의 프로그램은 파괴하지 않고 바이러스가 프로그램의 앞 혹은 뒤에 붙어 기생

바이러스 감염 여부 확인이 어렵다.

겹쳐쓰기형 바이러스

파일의 앞부분을 겹쳐쓴다.

원래의 프로그램이 파괴되므로 복구가 안된다.

산란형 바이러스

EXE를 감염시키지 않고 같은 이름으로 COM 파일을 만든다.

같은 디렉토리에 같은 이름의 EXE와 COM 이 있는 경우 사용자가 파일이름을 입력하면 COM이 먼저 실행된다.

연결형 바이러스

프로그램을 감염시키지 않는다.

디렉토리 영역에 저장된 프로그램의 시작위치를 바이러스 위치로 변경한다.

프로그램을 실행하면 원래 프로그램이 아니라 바이러스가 실행된다.

부트 및 파일 바이러스

부트섹터와 파일영역 모두를 감염시키는 바이러스

ex. 게킬라 바이러스, 나타스 바이러스, 침입자 바이러스

 

윈도우 DDE 취약점을 이용한 공격

-- 윈도우 DDE --

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

윈도우 애플리케이션 간에 공유 메모리를 사용해서 데이터를 공유

DDE의 정상적인 기능을 악용한 것으로 MS Word의 경우 문서를 열 때 자동 연결 업데이트를 해제하면 방어할 수 있다.

 

-- 공격방법 --

MS Word 문서를 실행 할 때 자동으로 계산기를 실행하게 만들기

해결법 : 문서를 열 때 연결 자동 업데이트를 체크제거한다.

 

Shell Code

작은 크기의 코드로 소프트웨어 취약점을 이용하는 짧은  기계어 코드

일반적으로 명령을 실행시켜서 피해자의 컴퓨터를 공격자가 통제한다.

 

Heap Spray

짧은 기계어 코드인 Shell Code를 Heap 영역에 뿌리는 것으로 Heap 영역에 임의적으로

Shell Code를 삽입하여 실행시키는 공격 기법

 

DEP( Data Execution Prevention )

데이터 실행 방지

현대의 마이크로소프트 윈도우 운영 체제에 포함된 보안 기능이며, 실행 방지 메모리 영역의 실행 코드에서 응용 프로그램이나 서비스가 실행되지 못하게 막기 위해 만들어 진 것

-- 모드 --

CPU를 위한 하드웨어 강화 DEP : 메모리 페이지를 실행 불가능 상태로 표시한다.

소프트웨어 강화 DEP : CPU가 하드웨어적으로 데이터 실행 방지를 지원하지 못하는 경우 이를 사용한다.

 

ASLR( Address Space Layout Randomiztion )

프로세스의 가상 주소공간에 Heap, Stack, Libc 등이 mapping 될 때 그 위치를 프로그램 실행 시 마다

랜덤하게 변경하는 메모리 보호 기법

-- 설정 값 확인 --

randomize_va_space = 0 : ASLR 해제

randomize_va_space = 1 : 랜덤 스택, 라이브러리 활성화

randomize_va_space = 2 : 랜덤 스택, 라이브러리 활성화, 힙 활성화( 기본값 )

 

버퍼 오버플로우

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

C나 C++를 이요하여 프로그램을 개발 할 때 메모리 공간에 제한을 두지 않는 API를 사용하여 발생하는 공격

-- 버퍼 오버플로우를 방지하기 위한 기술 --

Flow Control

Packet 간의 흐름을 제어하는 방법

수신자가 메시지를 수신 받지 못하면 전송 속도를 늦추어 Packet의 간격을 벌려주는 기법

반대로 수신자가 에러 없이 메시지를 빠르게 수신하면 전송 속도를 올린다.

 

-- 종류 --

Stack Overflows Attacks

시스템의 Memory 공간 중 Stack 영역의 값을 조작하는 공격 기법

Heap Overflows Attacks

시스템의 Memory 공간 중 Heap 영역의 값을 조작하는 공격 기법

Format String Attacks

입력값의 형식 유효성 결함을 이용한 공격 기법

ex. printf(), Sprintf() 등

 

-- 프로세스 메모리 구조 --

코드영역

프로그램 코드 자체가 기계어로 저장되는 영역

읽기 전용 데이터

CPU가 이 영역에 있는 명령을 읽고 처리

 

초기화된 데이터 영역

프로그램 실행 도중 자유롭게 접근하여 수정 및 변경 가능

전역변수, 정적변수 존재

-> 전역변수 : 프로그램이 종료될 때 까지 존재하며 다른 파일에서도 해당 변수에 접근 가능

-> 정적변수 : 프로그램이 종료될 때 까지 존재하며 static이라는 키워드가 붙으며, 다른 파일에서 접근 불가능

 

초기화되지 않은 데이터 영역( bss )

메모리 상 공간만 잡아 놓고 실제로 수를 초기화 시키지 않는다.

초기화 할 필요 없는 변수들을 할당할 때 사용

전역변수, 정적변수 존재

 

< 초기화된 데이터 영역과 bss 차이 >

초기화된 데이터 영역은 초기에 사용할 메모리를 확보하는 반면

bss는 런타임 후 메모리 영역이 확보된다.

 

Heap 영역

다른 영역( 데이터, 스택 )을 모두 할당하고 남은 공간

동적 할당을 통해 생성된 동적 변수를 관리하기 위한 영역

-> 동적할당 : 컴파일 되는 동안에 크기가 결정되어야 하는 경우 사용

 

스택 영역

함수 내에 정의된 지역 변수가 저장되는 영역

LIFO 구조( 함수는 또 다른 함수를 호출하고, 그 함수는 또 다른 함수를 호출하는데 처리가 완료되면

그 결과를 자신을 호출한 함수에게 반환하기 때문 )

 

커널 영역

운영체제라는 하나의 소프트웨어를 실행시키기 위해 필요한 메모리 공간

 

사용자 영역( 유저 영역 )

프로그램이 동작하기 위해 사용되는 메모리 공간( 코드 영역, 데이터 영역, 스택 및 힙 영역 )

 

-- Buffer Overflow에 취약한 C언어 함수들 --

공통점 : 길이 제한을 두는 기능이 없다.

strcpy( 대상 문자열, 원본 문자열 )

원본 문자열을 대상 문자열로 복사한다.

return 값 : 대상 문자열의 포인터

 

strcat( 최종 문자열, 붙일 문자열 )

최종 문자열 뒤에 붙일 문자열을 붙인다.

return 값 : 최종 문자열의 포인터

 

getwd( 작업중인 디렉토리의이름을 담을 버퍼 )

작업중인 디렉토리의 이름을 가져온다.

return 값 : 성공시 - 현재 작업중인 디렉토리 / 실패시 - NULL

 

gets( 입력 받을 버퍼 )

줄 바꿈( 엔터 )를 입력할 때 까지 1줄을 그대로 읽어들인다.

읽어들인 문자열은 줄 바꿈 하는 곳에서 \0이 붙여진 배열에 저장된다.

return 값 : 성공시 - 입력된 문자열 반환 / 실패시 - EOF( -1 )

 

fscanf( 파일 포인터, 서식, 변수의 주소1 ... )

파일에서 문자열을 읽은 뒤 서식에 맞추어서 값을 변수에 저장한다.

ex. fscanf( fp, "%s %d", s1, &num );

return 값 : 성공시 - 읽어온 값의 개수 / 실패시 - EOF( -1 )

 

scanf( 서식, 변수의 주소1 ... )

표준 입력을 받아서 변수에 값을 저장한다.

return 값 : 성공시 - 가져온 값의 개수 / 실패시 - EOF( -1 )

 

sprintf( 문자열, 서식 지정자, 정수 )

정수를 문자열 형태로 변환한다.

return 값 : 문자열

ex. int num = 231;

char s1[10];

char s2[10];

sprintf( s1, "%d", num );

sprintf( s2, "0x%x", num );

printf( "%s\n", s1 );

printf("%s\n", s2 );

=> 231 / 0xe7

 

경쟁조건

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

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

-- setuid를 이용한 간단한 백도어 공격 --

1. uid와 gid를 0으로 하는 프로그램을 만든다.

2. 컴파일한다.

3. 권한을 확인하여준다.

4. chmod 명령으로 권한을 바꾸어 준다.

5. useradd 명령으로 임의 유저를 만든다.

6. 임의 유저 확인

7. 만든 임의 유저로 들어가서 권한을 확인한다.

8. 미리 생성한 백도어 실행파일을 찾는다.

9. 백도어 실행파일을 실행하기 전과 실행한 후의 권한을 비교한다.

-- 심볼릭 링크를 이용한 백도어 공격 --

setuid 취약점을 이용한 백도어 공격에 ln -s( 심볼릭 링크 )를 걸어

백도어 프로그램을 삭제하더라도 root 사용자가 다시 백도어 프로그램명과 같은 이름을 디렉토리에

생성하게 되면 심볼릭 링크는 유효하게 된다.

 

APT 공격

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

 

-- 공격 단계 --

1. 목표를 정하고 목표에 대한 사전 조사 실시

2. 조사를 바탕으로 개인 PC에 악성코드 감염

3. 내부 인프라로 서서히 침투하여 백도어 및 툴 설치

4. 내부 인프라 접속 권한을 상승시키고 정보 탈취

5. 내부 인프라 장악 후 더 많은 정보를 유출하거나 보안사고 유발

 

바이너리 디핑

바이너리 디퍼 : 바이너리의 수정하기 전과 수정한 후의 다른 부분을 쉽게 찾아주는 툴

바이너리 디핑 : 다른 부분을 찾는 작업

 

윈도우 명령어

구분 설명
hfnetchk.exe 운영체제의 패치 상태를 확인
wuauclt.exe 윈도우 업데이트 페이지로부터 윈도우를 업데이트 해야 하는지 확인
runas.exe 현재 로그온이 제공하는 권한과는 다른 사용 권한으로 프로그램을 실행 할 수 있도록 함

 

공유 폴더

특정 폴더를 여러 사람들이 함께 사용 할 수 있도록 하여 필요한 파일을 저장하거나

이용할 수 있도록 한다.

-- 위험성 --

일반적으로 '읽기' 권한만 허용할 경우 큰 문제가 없지만, '변경, 모든권한'을 허용했을 때는

문제가 발생할 여지가 많다.

공유 폴더로 침입한 악성 코드들은 감염된 PC의 전체 드라이브에 공유 설정을 하여 PC전체를 손상시키고,

또 다른 PC로 자신을 전파시킨다.

 

-- 종류 --

사용자가 직접 설정하는 경우 : 다른 사람에게 보여진다.

윈도우가 설치될 때 자동으로 설정되는 '관리목적 공유폴더' : 다른 사람에게 보여지지 않고

관리자 권한이 있을 경우 접근만 가능하다

-> 이름뒤에 $가 붙는다.

C$

C드라이브에 대한 관리목적 공유폴더

C드라이브 안에 있는 파일/폴더의 삭제나 생성이 자유롭다.

 

ADMIN$

윈도우 설치 폴더에 접근하는 관리목적 공유폴더( 이 공유로 접근하면 그 컴퓨터의 윈도우 설치 폴더가 열린다. )

윈도우를 정상적으로 작동시키기 위한 중요한 파일들이 대부분이므로 수정/변경 시 문제 발생확률이 크다.

 

IPC$

서버간 통신에 가장 많이 사용되는 공유 등과 같이 관리 목적으로 공유되는 경우 드라이브를 매핑하지 않고

Named pipes를 통해 읽는다.

 

PRINT$

공유 프린터를 만들 때 마다 시스템이 드라이버를 배포하기 위해 만드는 공유

 

-- Null Session Share 취약점 --

윈도우가 설치된 서버에 IPC$를 통한 원격 접속 시 패스워드를 Null로 설정하여 접속할 수 있는 취약점

공격자가 시스템의 유저명, 공유정보 등을 열람할 수 있고 일부 레지스트리에 접근할 수 있으며

DOS 공격에 활용될 수 있다.