시스템 해킹을 위한 기초 지식은 다음과 같다.

1. 운영체제

2. CPU와 레지스터

3. 메모리

4. 어셈블리어

5. 스택



1. 운영체제


- 개념

운영체제란 사용자가 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템 자원( 기억장치, 프로세서, 입출력 장치, 정보, 네트워크 등 )을 효율적으로 관리할 수 있도록 하는 프로그램 집합


- 기능

> 사용자 명령 인터페이스

사용자와 시스템의 대화 수단.

셸, GUI( Graphic User Intercafe )


> 서브 시스템 관리자

# 메모리관리자

프로그램의 메모리 요청에 대해 적합성을 점검하고, 적합한 경우 메모리를 할당한다.

또한 할당된 메모리를 다른 프로그램이 접근하지 못하게 괸라하고 보호하며, 프로그램 종료 시에는 할당된 메모리를 회수한다.


# 프로세서 관리자

명령어들이 체계적이고 효율적으로 실행되도록 작업 스케줄링하고 사용자의 작업 요청을 수용하거나 거부한다.


# 장치 관리자

프린터, 디스크 드라이버, 모뎀, 모니터 등, 시스템 내의 모든 장치를 프로그램에 할당하거나 회수한다.


# 파일 관리자

시스템 내의 데이터, 응용 프로그램 등의 모든 파일에 사용자별로 파일 접근 권한을 부여하고, 접근 권한에 따라 파일을 할당하고 해제한다.


# 네트워크 관리자

네트워크에서 접근 가능한 CPU, 메모리, 프린터 등과 같은 자원을 관리한다.



2. 윈도우


- 커널

커널은 운영체제의 중심에 위치하며, 운영체제에서 어떤 작업을 시작하더라도 커널의 동작에 의해 제어된다. 즉, 커널은 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스 제공 등 운영체제의 기본 기능을 제공하는 핵심이라 할 수 있다.


- 커널 구조


커널모드는 기본적으로 사용자가 접근할 수 없는 영역으로, 프로그램의 실행과 관련한 기본관리 시스템이 여기에 존재한다. 윈도우는 프로그램을 만들고 실행하는 모든 과정이 사용자 모드에서만 가능하도록 설계되었으나, 완벽하게 구현되지는 않았다. 예를 들면 윈도우에서는 마이크로 커널이 HAL을 무시하고 하드웨어와 통신할 수 있는 가능성이 있으며, 이는 윈도우가 링 구조를 완전히 적용한 운영체제가 아니라는 것을 보여준다. 그리고 이런 점이 보안의 허점을 만들어낸다.


- 윈도우 시스템의 구조

> HAL( Hardware Abstraction Layer )

윈도우에서는 리눅스/유닉스에서와 달리 새로 개발된 하드웨어를 시스템에 장착해도 드라이버 개발자가 새로운 장치에 대한 모든 것을 알 필요가 없다. 드라이버 개발자와 하드웨어 개발자는 윈도우에서 제시한 기본 표준만 따르면 되는데 그 표준이 HAL이다.


> 마이크로 커널( micro kernel )

본래 커널은 프로세스의 스케줄링이나 메모리 관리, 데이터의 입출력, 하드웨어 제어 같은 일을 했다. 그러나 윈도우에서는 이를 여러 관리자에게 분담시키고 커널은 하드웨어와의 통신만 제어하는 최소한의 커널이 되었다. 


> 입출력 관리자

시스템의 입출력을 제어한다.

장치 드라이버 사이에서 메시지를 전달한다. 또한 응용 프로그램이 하드웨어와 곧바로 통신할 수 있는 통로를 제공한다.


> 객체 관리자

윈도우는 파일, 포트, 프로세스, 스레드 등의 모든 것이 객체로 정의된다. 

객체 관리자는 이런 각 개체들에 대한 정보를 제공한다.


> 보안 참조 관리자

각 데이터나 시스템 자원의 제어를 허가하거나 거부함으로써 시스템의 강제 보안 설정을 책임진다.


> 프로세스 관리자

스레드를 생성하고 요청에 따라 처리한다.


> 로컬 프로시저 호출 관리자

각 프로세스는 서로의 메모리 공간을 침범하지 못하므로 프로세스 간 통신이 필요한 경우에 이를 대신해 줄 수 있는 장치가 필요하다. 그 장치가 로컬 프로시저 호출 관리자다.


> 가상 메모리 관리자

응용 프로그램의 요청에 따라 RAM의 메모리를 할당하고, 가상 메모리의 페이징을 제어한다.


> 그래픽 장치 관리자

화면에 선이나 곡선을 그리거나 폰트 등을 관리한다.


> 기타 관리자

캐시 관리자, PNP 관리자, 전원 관리자 등이 있다.



윈도우는 여러 응용 프로그램을 실행하기 위해 몇 가지 서브 시스템을 동작하는데, 가장 기본 서브 시스템으로 Win32가 있다. 이는 32비트 응용 프로그램이 동작할 수 있게 도와주고, 기본 윈도우 사용자 인터페이스를 제공한다. 즉, 비디오 디스플레이, 키보드, 마우스 등을 지원한다.

이외에 보안 서브 시스템과 유닉스 운영체제에 기반을 둔 일련의 표준 운영체제 인터페이스로 POSIX가 있다. 보안 시스템은 사용자가 로그인할 때 데이터를 보호하고, 운영체제가 이를 제어할 수 있도록 만든다.



3. 리눅스/유닉스


- 커널

> 모놀리식 커널

거대한 커널이 모든 기능을 수행하도록 만들어졌으며, 안정적이지만 문제가 발생할 경우 부분 수정이 어렵다.


> 마이크로 커널

여러 개의 모듈이 모여 하나의 커널을 이룬다.

개별 모듈의 업로드와 언로드가 가능하다.

각 모듈의 권한이 동일하여 잘못 된 모듈을 업로드할 경우 커널 전체가 망가질 수 있다.


- 구조

> 프로세스 제어

프로세스 간 통신, 스케줄링, 메모리 관리를 구현한다.


> 장치 드라이버

하드웨어와 소프트웨어를 연결해주는 인터페이스를 제공한다.


> 파일 서브 시스템

하드 디스크와 같은 저장 공간에 유닉스의 파일을 저장하고 읽는 역할을 한다.


> 셸

응용프로그램에서 명령을 받아 커널에 전송하는 역할을 하며, 사용자의 키보드 입력을 인식하고 해당 프로그램을 수행하기도 한다.


- 셸 기능

* 자체의 내장 명령어 제공

* 입력/출력/오류의 방향 변경

* 와일드카드

* 파이프라인

* 조건부/무조건부 명령 열 작성

* 서브 셸 생성

* 백그라운드 처리

* 셸 스크립트 작성

'NCS보안3기 > 시스템 해킹' 카테고리의 다른 글

[System Hacking] Stack Buffer Overflow  (0) 2017.05.16
[System Hacking] 메모리  (0) 2017.05.16
[System Hacking] CPU와 레지스터  (0) 2017.05.16
Posted by Imp3rio

이전 포스팅에서 데이터를 추출하는 실습을 했다.

이번에 할 실습은 변조된 vhd를 복구시키는 실습이다.



  - [FAT32_2_1] 파일은 압수한 USB의 vhd 파일이다.



  1. 위의 이미지는 VBR영역과 FAT영역 일부가 손상되었다.

  2. 파일시스템이 정상적으로 동작할 수 있도록 손상된 데이터를 복구하시요.

  3. 정상적으로 작동하는지 가상디스크에 장착하여 확인하시요. 




* 실습파일( LINK )


다운로드 한 실습파일을 압축풀면 FAT32_2_1 파일이 만들어진다.

해당 파일을 FTK Imager로 열어보면 다음과 같이 나타난다.


파티션이 하나 있지만 어떠한 데이터도 존재하지 않는 것을 알 수 있다.

해당 파일을 HxD 에디터를 이용해 열어보면 다음과 같다.

빨간 박스로 표시된 부분을 보면 FAT32로 파티션 되어있는 것을 알 수 있다.

하지만 FTK Imager로 열었을 때 해당 파티션에서 데이터를 확인할 수 없었다.

FAT32의 VBR을 찾아가 보면 다음과 같다.

표시된 부분이 변조되어 있다.

순서대로 Byte per Sector, SP, RS, Hidden, Total Partition Size, FAT Size이다.

Hidden, Total Partition Size 부분은 알 수가 있다.

VBR의 위치가 128이기 때문에 Hidden은 80 00 00 00이다.

그리고 Total Partition Size 정보는 MBR에 나와 있다.

SP의 경우 기본적으로 512 바이트를 사용하며, 2048 바이트를 사용하기도 한다.

이를 토대로 수정한 VBR은 다음과 같다.

현재 확인할 수 없는 것들은 SP, RS, 그리고 FAT Size이다.

SP의 값을 찾기 위해 FSINFO 부분을 가면 다음과 같다.

표시된 부분은 남은 클러스터의 수와 다음에 할당할 클러스터에 대한 정보이다.

남은 클러스터의 수를 보면 D8 C0 07 00으로 이 값을 계산하면 508,120이다.

그리고 파티션의 총 크기는 앞서 본 것처럼 00 81 1F 00이며 이 값은 2,064,640이다.

즉, 508,120 을 4배하면 대략 총 크기와 비슷하다는 것을 확인할 수 있다.

이 말은 SP가 4임을 알 수 있다.( Sector 단위는 64바이트이기 때문이다. )


다음에 확인할 것은 Root Directory인데,  RS를 모르기 때문에 Root Directory를 찾아갈 수가 없다.

우선 FAT 테이블을 확인하기 위해 FAT의 시그니처 8F FF FF 0F 를 찾아가 보자.

12459 섹터에 FAT 테이블이 존재한다. VBR에서 FAT이 2개있음을 확인했다. 해당 섹터 이후에 FAT 테이블이 존재하는 지 확인해보자.

해당 시그니처는 더 이상 없는 것을 확인할 수 있다. 따라서 12459 섹터에 있는 FAT 테이블은 2 번째 테이블임을 추측할 수 있다. 즉, 위 어딘가에 FAT 1이 있음을 알 수 있다.


문제에서 USB의 vhd라는 힌트를 줬기 때문에 USB 문자열을 찾아보자.

그러면 위와 같이 16512 섹터가 탐색이 되며, 구조를 보면 Directory Entry의 구조를 갖고 있다.

이를 통해 FAT Size를 구할 수 있는데 계산은 다음과 같이 한다.

16,512( Directory Entry ) - 12,459( FAT 2 ) = 4,053

이제 FAT 1의 위치를 다음과 같이 구할 수 있다.

12,459 - 4,053 = 8406


해당 위치로 가보면 다음과 같은 화면을 볼 수 있다.

FAT 1의 데이터가 모두 변조되어 있음을 알 수 있다.

FAT 2의 데이터를 복사해 FAT 1에 붙여 넣자.

위와 같이 수정을 하고 VBR을 수정한다.

RS와 FAT Size를 수정해야 하는데, FAT Size는 4,053임을 알았다.

RS는 다음과 같이 구할 수 있다.

8,406( FAT 1 ) - 128 = 8,278

4,053과 8,278 을 16진수로 바꾸면 각각 0xFD5, 0x2056이다.

이 값들을 리틀엔디언으로 수정하면 다음과 같다.

이제 파일을 저장한 뒤 FTK Imager로 열어보면 다음과 같은 화면을 확인할 수 있다.


Posted by Imp3rio

지금까지 살펴본 내용을 바탕으로 데이터 복구 실습을 한다.

지금 할 실습은 FAT32 파일 안에 존재하는 데이터를 긁어 파일을 추출하는 실습이다.

* 실습에 사용할 프로그램은 HxD 에디터와 FTK Imager이다.


FAT32.zip


우선 위 압축 파일을 받아 압축을 해제한다.

그러면 FAT32라는 파일이 나타난다. 이 파일을 복구하도록 한다.



1. MBR 확인


HxD 에디터로 FAT32 파일을 열어 MBR을 보면 위와 같다.

빨간색으로 표시된 부분은 각각 파티션 타입, VBR 위치, 파티션 크기를 나타낸다.

파티션 타입이 00 으로 되어 있는 것을 봐선 변조되어 있음을 알 수 있다. MBR에서 파티션의 타입을 확인할 수 없으니 일단 해당 파티션의 VBR로 가보자,



2. VBR 확인


VBR의 위치는 위 그림에서 빨간색 박스가 있는 부분을 보면 된다.

80 00 00 00 이라고 되어 있으며 이는 Little Endian 방식이다. 계산을 하면 128이 나온다.

VBR에서 확인해야 하는 부분은 위 그림에서 빨간 박스 부분들이다.

순서대로 파티션 시그니처, SP, RS, Hidden, FAT Size 이다. 모두 Little Endian으로 표기되어 있다.

> 파티션 시그니처 ⇒ MSDOS5.0 = FAT32

> SP = 0x04 = 4

> RS = 0xF619 = 6,646

> Hidden = 0x80 = 128

> FAT Size = 0x503 = 773



3. FAT 확인


FAT의 위치는 RS + Hidden 으로 6,646 + 128 = 6,774 이다.

FAT은 파일에 대한 데이터가 어디에 위치하는 지 알려주는데, 하나의 파일에 대한 정보를 4바이트로 담고 있다. 

처음 2개( 8 바이트 )는 사용하지 않으며 일종의 FAT이라는 시그니처를 담고 있다.


4. Root Directory 확인


Root Directory에 대한 정보가 있는 위치는 다음과 같이 계산할 수 있다.


6,774( FAT 1 시작위치 ) + 773×2( FAT 1, FAT 2의 크기 )  = 8,320

계산한 위치로 이동해보면 다음과 같다.

Root Directory를 보면 어떤한 데이터도 존재하지 않는다.

즉, Root Directory가 변조되어 있어 어떤 파일들이 존재하는지 알 수 없다.

이는 Root Directory를 이용해 어떤 파일이 존재하는지 알 수 없음을 의미한다.

파일을 복구하기 위해 FAT을 분석하자.



5. FAT 테이블 분석


FAT 테이블 정보를 보면 다음과 같다.

블럭영역이 첫번째 파일에 대한 정보이다.

FAT 테이블에는 파일에 대한 정보가 4바이트씩 저장된다고했다. 이를 이용해 분석을 하자.

우선 파일의 데이터가 11번째 ~ 35번째 까지 있음을 알 수 있다.

파일의 시작위치와 끝 위치를 계산하는 법은 다음과 같다.


- 시작위치

11 - 2( 시그니처 ) = 9

9 × 4( SP ) = 36

36 + 8320( Root Directory ) = 8356


- 끝 위치

35 - 2( 시그니처 ) = 33

33 × 4( SP ) = 132

132 + 8320( Root Directory ) = 8452


파일의 시작위치로 가보면 다음과 같다.

해당 파일이 PNG 파일임을 알 수 있다.

파일의 끝은 8452 섹터인데, 이 값은 해당 클러스터의 시작 위치이기 때문에 클러스터 크기만큼 더해줘야 한다. 클러스터 크기가 4이기 때문에 8452부터 4섹터인 8455 섹터까지 블럭지정을 한다.

위와 같이 [Edit] - [Select block] 을 이용하면 오프셋을 이용해 블럭 지정할 수 있다.

블럭지정한 데이터 부분을 복사해서 [새파일]을 눌러 붙여넣기 한다.

그리고 다음과 같이 'File1.png' 로 저장한다.

그리고 해당 파일이 제대로 열리는지 확인해보자.

위와 같은 이미지 파일이 열리는 것을 확인할 수 있다.


이제 두 번째 파일을 보도록하자.

두 번째 파일은 39번째 ~ 41번째에 있다.

첫번째 파일을 찾은 것과 같은 방식으로 계산을 하면 다음과 같다.

두 번째 파일의 시작 위치는 8468, 파일의 끝 위치는 8476 이다.

두 번재 파일은 jpg 파일임을 알 수 있다.

해당 데이터를 모두 복사해서 'File2.jpg' 파일로 저장하자.

해당 파일을 열어보면 다음과 같다.

다음 파일을 찾아보면 다음과 같다.

42번째 ~ 126번째

파일의 시작 위치와 끝 위치는 각각 8480, 8816이다.

해당 파일의 시작위치를 보면 다음과 같다.

이 파일도 PNG 파일임을 알 수 있다.

해당 데이터를 추출해 'File3.png'로 저장하면 다음과 같다.

이와 같은 방식으로 데이터를 추출해 낼 수 있다.

Posted by Imp3rio

1. 타임라인 분석이란 ?


타임라인 분석은 파일시스템의 메타데이터( 할당/비할당 포함 )에 있는 파일 시간을 기준으로 각 파일 시간별 정렬을 통해 가장 최근시간, 가장 오래된 시간, 사용빈도 등의 분석을 통해 시계열 분석을 하는 것이다.


타임라인 분석 대상은 상당히 다양하게 존재한다. NTFS, FAT 파일시스템의 파일 스템프값, 레지스트리 상의 운영체제 설치 시간, USB 연결시간, 레지스트리의 마지막 쓰기 값, 이벤트 로그 생성/기록 값, 프리패치의 마지막 실행 값 등 타임라인 분석에 포함시켜야 할 대상은 이보다 더 많이 존재한다. 분석가는 타임라인 분석에 포함시켜야 할 대상을 선별하고 각 타임라인 분석대상에 대한 특성을 파악하고 있어야 원활한 분석을 수행할 수 있다.


타임라인 분석 대상 중 가장 비중이 큰 파일시스템에 존재하는 시간값도 파일시스템 종류에 따른 특성 등을 이해하고 있어야만 제대로 된 타임라인 분석을 수행할 수 있다.



2. 파일 타임 시스템이란 ?


파일타임은 1601년 1월 1일 12:00 AM, UTC를 시작으로 100 나노세컨드 단위로 64비트 값으로 저장된다. 시스템은 프로그램이 파일을 생성, 접근, 수정했을 경우 파일타임을 기록한다.


NTFS 파일시스템은 UTC 포맷으로 시간값을 저장하며, 타임존이 변경되더라도 영향을 받지 않는다. 이는 타임존에 따라 저장되는 시간값이 달라지지 않는다는 것을 의미한다.

(ex)

타임존이 Asis/Seoul(+9) 일때 NTFS 파일시스템에 저장되어 있는 파일의 시간값이 2016/1/1 10:00 AM이면, 저장될 때에는 UTC 기준으로 2016/1/1 01:00 AM 으로 저장된다.


타임스탬프는 다양한 이유에 의해 업데이트 되며, 변경이 종료된 후 파일시간이 변경된다.


모든 파일시스템이 생성시간, 마지막 접근 시간을 기록하지 않으며, 방식 또한 다르다.


(ex)

FAT 파일시스템에서의 파일 생성시간은 10 밀리세컨드 단위로 되는 반면, 수정시간은 2초 단위로, 접근시간은 1일 단위로 기록된다.


(ex)

NTFS 파일시스템은 마지막 접근시간에 대한 기록을 마지막 접근 시간의 한시간이 지난 후에 기록한다.



3. 일반적인 타임스탬프별 특성


- 수정시간

수정시간이란, 파일이 마지막으로 쓰여진 시간( 내용이 마지막으로 업데이트 된 시간 )으로 파일명이 변경되는 것은 파일의 시간값에 영향을 주지 않으며, 파일을 단지 열기만 하는 것은 영향을 주지 않는다.


- 접근시간

접근시간이란, 볼륨에서 파일이 열리거나 수정된 시간이다. FAT 파일시스템에서는 접근시간은 날짜로만 기록된다.


- 생성시간

파일 또는 폴더가 해당 볼륨에 최초 생성된 시간이다. 



4. 타임라인 분석 대상 및 정보


분석 대상

분석 대상 위치

세부 분석 대상

포함 시간정보

NTFS

Root\$MFT

$SIA(Standard Information Attribute)

$FNA(File Name Attribute)

Created Time

Written Time

Last Accessed Time

Entry Modified Time

FAT

Directory Entry영역

Directory Entry

Created Time

Written Time

Last Accessed Date

ExFAT

File Directory Entry영역

File Directory Entry

Created Time

Written Time

Last Accessed Time

Registry Hive

C:\Windows\System32\config

 

 

 

C:\Users\[User]\

Hive Key

SAM, SECURITY, SOFTWARE, SYSTEM, NTUSER.DAT

Last Written Time

EVT Event Log

 

EventLogRecord

TimeGenerated,

TimeWritten

EVTX Event Log

 

Event Record

TimeCreated

Prefetch

 

Header

Last Run Time

Filesystem Created Time

Shortcut(LNK)

 

ShellLinkHeader

Target’s Created

Target’s Written

Target’s LastAccessed

Recycle Bin

 

INFO2, $I

Deleted time/date

Internet Explorer

 

URL Record(index.dat)

LastModified, LastAccessed, ExpiryTime

Chrome

 

History(SQLite)

urls(last_visit_time), visits(visit_time), downloads(start_time)

Firefox

 

cookies.sqlite, downloads.sqlite, places.sqlite

cookies(Expiry, lastAccessed), downloads(startTime, endTime), places(last_visit_date, visit_date, dateAdded, lastModified)

            

MS Word

 

 

 

아래 한글

 

 

 


5. 타임라인 분석 문제


[01-2]_타임라인 포렌식 분석 기초 테스트.docx


위 파일을 받아 문제를 풀어 보자.

문제는 전체적으로 복사와 이동에 대한 차이를 알고 있는지를 묻고 있다.

복사와 이동에 대해서는 다음 표에서 설명한다.


 

복사 

이동 

생성시간 

변경 

유지 

수정시간 

유지 

유지 

접근시간 

변경 

변경 


위 표에 대한 정보를 가지고 문제를 풀면 쉽게 풀 수 있다.


6. 타임라인 분석 문제 - 해설


[01-2]_타임라인 포렌식 분석 기초 테스트 - 해설.docx


Posted by Imp3rio

1. LFN 분석


LFN( Long File Name )은 SFN과 달리 파일의 이름을 255자까지 사용할 수 있다.

LFN 파일을 만들기 전에 우선 LFN의 구조부터 알아보자.


Seq Num : Sequence Number로 순서가 있으며, 이 순서대로 파일의 이름을 적용한다. 시작 번호는 0x01이고 마지막 번호에는 0x40이 OR된 값이 오며, 이 값을 보고 마지막 LFN임을 판단한다.

Name 1 : 1~5 번째 문자열을 기록한다. 유니코드로 기록하며 한 문자에 2바이트를 차지한다.

Attribute : 이 값은 항상 0x0F로 고정되어 있다.

Type : 항상 0x00으로 채워져 있다.

CheckSum : 해당 LFN과 대응되는 SFN의 체크섬이 저장된다.

Name 2 : 6 ~ 11 번째 문자열을 기록한다.

First Cluster Low : 반드시 0이 들어간다.

Name 3 : 12 ~ 13번째 문자열을 기록한다.


실제로 파일명이 긴 파일을 하나 생성해 보면 Directory Entry는 다음과 같다.

* 파일은 'HelloMyFriendImp3rio.txt'로 한다.

제일 아래를 보면 SFN이 있고 그 위로 LFN이 오는 것을 볼 수 있다.

그리고 LFN은 위로 가면서 Seq Num이 증가하며 마지막 LFN은 0x42임을 알 수 있다.


우선 이를 분석해 보도록 하자.

SFN을 보면 파일 명이 'HELLOM~1' 임을 알 수 있다. 파일명의 길이가 8자 이상일 경우 파일명의 앞 6자리 + '~1'이 붙는다.

LFN을 보면 처음에 Seq Num이 오고, 2바이트씩 파일명이 온다. 속성 값은 0x0F, Type 값은 0x00 체크섬은 0x8B로 되어 있다.

LFN에서 이 세 값과 First Cluster 값이 다르거나 이상하면 인식되지 않는다.


LFN에서 CheckSum은 SFN을 이용하며 그 방법은 아래와 같다.

① 'HELLOM~1TXT'의 각 문자를 2진수로 표현한다.

② 'H' 문자의 2진수 값을 오른쪽으로 Shift한다.

③ 다음 문자인 'E'의 2진수 값과 더한다.

④ 결과 값을 오른쪽으로 Shift한다.

⑤ ③과 ④를 마지막 문자까지 반복한다.

⑥ 결과 값을 16진수로 표현한다.


* LFN CheckSum을 구하는 프로그램

LFN_CheckSum.py

> 해당 파일은 python 2.7 버전으로 만든 것이다. 실행하면 다음과 같이 결과를 확인할 수 있다.


2. LFN 실습


분석을 한 결과를 응용해서 HxD 에디터로 LFN 파일을 생성해보자.

파일은 'goodbymyfriendImp3rio.txt' 로 한다.

파일을 만들기 위해 수정해야 하는 부분을 살펴보면 다음과 같다.

- FSINFO에서 남은 클러스터 수와 다음에 사용할 클러스터를 수정한다. ( Option )

- FAT #1 수정한다.

- Root Directory Entry에서 SFN과 LFN을 추가한다.

- 실제 데이터가 들어있어야 하는 섹터로 이동해 데이터를 넣는다.

* FSINFO를 수정하는 것은 선택사항이기 때문에 본 실습에서는 하지 않는다.


위의 과정을 수행하면 파일이 생성이 되고 파일을 읽을 수 있다.

하지만 어느 하나 잘못 입력하거나 값이 다르면 LFN으로 인식되지 않는다.


그럼 실습을 해보자.

> FAT #1 을 수정한다.

* FAT #1의 위치는 다음과 같이 찾을 수 있다.

RS( Reserved Sector ) F6 19( Little Endian ) ==> 6,646

Hidden 80 00 00 00( Little Endian ) ==> 128

RS + Hidden = 6,774


> Root Directory를 수정한다.

* LFN에서 CheckSum을 구하기 위해 위 파이썬 파일을 이용한다.

구한 CheckSum 값을 이용해 다음과 같이 수정한다.

* 파일명을 다 입력한 뒤 남은 Name 부분은 'FF'로 채워준다.


데이터를 넣기 위해서 만든 파일의 시작 위치를 구한다.

0E 00 ==> 14

(14-2) * 4( SP ) = 48

8320 + 48 = 8368

8368섹터를 위와 같이 수정한다.


그리고 vhd를 마운트 시켜서 탐색기로 보게 되면 다음과 같이 파일이 존재하는 것을 확인할 수 있고

파일 또한 제대로 열리는 것을 확인할 수 있다.



Posted by Imp3rio

HxD 에디터를 이용해 디스크에 임의의 파일을 생성해보자.

우선 디스크관리자를 실행하고 다음과 같이 FAT32라는 이름의 vhd를 하나 생성한다.

디스크의 크기는 200MB, 디스크 포맷은 VHD, 디스크 유형은 고정크기로 한다.

디스크가 만들어지면 위와 같이 파티션 형식을 MBR로 디스크를 초기화한다.

해당 디스크에 볼륨을 위와 같이 설정하여 생성한다.


우선 HxD 에디터로 파일을 생성하기 위해서는 FAT32 파일시스템 구조에 대해 알아야 한다.

FAT32 파일시스템 구조는 이전 블로그를 참고하길 바란다.


다음 파일을 한번 생성해보자.

- 파일명 : hack.txt

- 파일위치 : 루트 디렉터리

- 파일내용 : this file is created by hacktool

- 파일크기 : 20bytes

- 파일생성 시간 : 2000.12.31 23:59:59

- 파일수정 시간 : 1999.9.30 15:30:12

- 파일접근 날짜 : 1998.11.10


이를 위해 수정해야 하는 것은 다음과 같다.

> FSINFO에서 다음 사용할 클러스터 확인 및 수정

> Directory Entry 수정

> FAT 수정


우선 HxD 에디터를 관리자권한으로 열고 다음과 같이 [기타설정]-[디스크 열기]를 클릭해 생성한 하드디스크2를 선택한다. 이때 [읽기전용으로 열기]에 체크를 해제한다.


* [기타설정]-[디스크 열기]를 이용해 vhd를 열었을 경우 해당 vhd가 연결되어 있는 상태이기 때문에 vhd를 수정할 수가 없다. 따라서 vhd를 인식하지 못하도록 MBR 파티션 테이블에서 파티션 타입을 '00'으로 설정한 뒤 디스크 관리자를 새로고침하면 해당 vhd가 연결해제된다. 이 상태로 작업을 한 뒤 vhd를 인식하기 위해 수정한 MBR 파티션 테이블을 복구하고 디스크 관리자를 새로고침해야 한다.


* [기타설정]-[디스크 이미지 열기]를 이용할 경우 해당 vhd를 분리한 뒤 작업을 하면 된다.


필자는 [기타설정]-[디스크 열기]를 이용했기 때문에 다음과 같이 MBR 파티션 테이블 값을 변경한다.


디스크 관리자를 새로고침하면 다음과 같이 FAT32 vhd가 인식되지 않는다.


위의 MBR 캡처화면의 ①을 통해 VBR의 위치가 '80 00 00 00'으로 128임을 알 수 있다.

해당 위치로 가면 다음과 같은 화면을 볼 수 있다.

이를 분석하면 다음과 같다.

① : SP( 클러스터 당 섹터 수 ) : 4

② : RS( 예약 섹터 ) : 6,646

③ : Hidden Sector : 128

④ : FAT Size : 773


이를 통해 다음을 계산할 수 있다.

- FAT 1의 시작 위치 : 128( Hidden Sector ) + 6,646( RS ) : 6,774

- FAT 2의 시작 위치 : 6,774 + 773( FAT 1 Size ) = 7,547

- 루트 디렉터리 시작 위치 : 7,547 + 773( FAT 2 Size ) = 8,320


파일의 시작 위치를 알기 위해 FSINFO 부분을 보면 다음과 같다.

* FSINFO는 VBR+1 위치에 있다.

① : 남은 클러스터 수

② : 다음 사용할 클러스터 번호


이를 통해 다음 사용할 클러스터는 6임을 알 수 있다.

파일의 시작위치는 다음과 같이 계산할 수 있다.

- ( 6  - 2( 예약 클러스터의 수 ) ) * 4( 클러스터 당 섹터 수 ) + 8,320( 루트 디렉터리 시작 위치 ) = 8,336


지금까지 확인한 내용을 보면 다음과 같다.

- FAT 1 위치 : 6,774

- 루트디렉터리 위치 : 8,320

- 파일의 시작 위치 : 8,336


이를 이용해 파일을 한번 만들어 보자.

먼저 실제 데이터가 들어가는 8,336 섹터에 다음과 같이 데이터를 넣는다.

루트 디렉터리에 파일에 대한 정보를 기입한다.

* 파일에 대한 정보를 계산하는 법은 이전 포스트를 참고하길 바란다.

FAT 1 정보를 다음과 같이 수정한다.

* FAT 1 정보에 대한 내용은 이전 포스트를 참고하길 바란다.

FSINFO에 대한 정보를 다음과 같이 수정한다.

* 클러스터 하나를 사용했기 때문에 FSINFO에 반영해 주어야한다.

정보를 모두 변경했다면 MBR에서 수정한 파티션 타입을 FAT32로 다시 변경해 준다.

저장을 한 뒤에 디스크 관리에서 새로고침을 누르면 다음과 같이 FAT32 볼륨이 연결이 된다.

파일 탐색기를 이용해 FAT32 볼륨에 들어가 보면 다음과 같이 HACK.TXT 파일이 생성된 것을 볼 수 있다.

FTK Imager를 이용해 해당 디스크를 보면 다음과 같이 정보와 저장된 데이터를 볼 수 있다.

* 파일 탐색기에서 HACK.TXT 파일의 속성을 보게 되면 접근 날짜가 현재로 변경이 된다. 그렇기 때문에 FTK Imager를 이용해 속성들을 보아야 정확하게 확인할 수 있다.

* 데이터를 보면 실제 입력했던 데이터가 모두 출력되지 않는다. 그 이유는 파일의 크기를 20 bytes로 했기 때문에 20 bytes까지만 확인할 수 있다.

Posted by Imp3rio

1. MITM( Man In The Middle )


MITM 공격은 글자 그대로 누군가의 사이에 끼어드는 것이다. 

클라이언트와 서버의 통신에 암호화된 채널을 이용하게 되면서 등장했다.

MITM은 전달되는 패킷의 MAC 주소와 IP 주소 뿐만 아니라 패킷의 내용까지 바꿀 수 있다.

네트워크 통신을 조작하여 내용을 도청하거나 조작하는 공격


* CAUTION

프로토콜 취약점을 이용한 공격으로 현재까지도 카페, 도서관 등의 공공장소에서 공격이 가능하다

ARP 스푸핑 공격만으로도 범죄다.

절대 공공장소에서 테스트하지 말고 가상환경에서 테스트해야 한다.


MITM 공격 방법은

ARP 스푸핑 공격을 하면서 Packet 포워딩을 하는 것이다.


필자는 ettercap 툴과 etterfiler 툴을 이용한다.


kali linux 터미널창을 열고 아래와 같이 명령을 입력하면 공격을 수행한다.


ettercap -T -M arp:remote //victim ip/ //gateway ip/



희생자 컴퓨터에서 인터넷 접속을 하게 되면 다음과 같이 나타난다.



즉 패킷에 대한 정보들을 화면에 출력해준다.


ettercap을 이용하면 이와 같이 패킷을 캡쳐할 수 있다.


이번에 볼 것은 etterfilter를 이용해 love 라는 단어를 hate라는 단어로 변조시키는 것이다.

이를 위해 먼저 코드를 작성해야 한다.

kali linux에서 vi 또는 edit 을 이용해 파일을 하나 생성한다. 파일의 확장자는 어느것으로 해도 상관 없다.

필자는 txt 롹장자로 하겠다.


코드를 작성한 후 다음 명령으로 적용할 필터 파일을 생성한다.

etterfilter -o love.elf love.txt


위와 같은 명령이 수행되면 love.elf 파일이 만들어진다. elf 파일은 ettercap 툴에서 필터링 할때 사용하는 파일이다.



ettercap -T -M arp:remote -F love.elf //victim ip/ //gateway ip/

위 명령을 수행하면 위 그림과 같이 나타나며 공격이 수행된다.


희생자가 인터넷에 'love'를 검색하면 'hate'로 변경되는 것을 확인할 수 있다.


* 희생자가 브라우저를 통해 'love'를 검색하는 화면


문자를 변경하는 것을 해봤으니 이제 이미지를 변경시키는 공격을 해보자.


우선 앞서 공격한 방식대로 코드를 먼저 작성한다.

필자는 image.txt 파일을 만들었다.



위 파일을 다음 명령을 수행해 필터 파일을 생성한다.

etterfilter -o image.elf image.txt


ettercap -T -M arp:remote -F image.elf //victim ip/ //gateway ip/

명령으로 공격한다.


희생자가 웹 사이트에 접속하면 이미지가 변경되는 것을 확인할 수 있다.


'NCS보안3기 > 네트워크 해킹' 카테고리의 다른 글

[Network Hacking] 세션 하이재킹  (0) 2017.05.01
[Network Hacking] 스푸핑 공격  (0) 2017.04.30
[Network Hacking] 스니핑  (0) 2017.04.30
[Network Hacking] TCP 스캔  (0) 2017.04.30
[Network Hacking] ICMP스캔  (0) 2017.04.30
Posted by Imp3rio

세션 하이재킹은 '세션 가로채기'라는 의미다. 

세션은 '사용자와 컴퓨터, 또는 두 컴퓨터 간의 활성화 상태'를 말한다.


1. TCP 세션 하이재킹


TCP 세션 하이재킹은 서버와 클라이언트가 통신할 때 TCP의 시퀀스 넘버를 제어하는 데 문제점이 있음을 알고 이를 파고든 공격이다.

Non-Blind Attack과 Blind Attack이 있다. 

Non-Blind Attack : 공격 대상을 탐지할 수 있으며 서버와 클라이언트가 통신할 때 시퀀스 넘버를 알아낼 수 있다

Blind Attack : 서버와 클라이언트가 통신할 때 시퀀스 넘버를 알 수 없다. 즉, 찍어야 한다.



- 개념

클라이언트와 서버 간의 통신을 관찰할 수 있을 뿐만 아니라 텔넷, FTP 등 TCP를 이용한 거의 모든 세션을 갈취하는 것이 가능하다.

또한 인증에 관한 문제를 해결하기 위해 도입된 일회용 패스워드, 토큰 기반 인증을 이용한 세션 갈취도 가능하다.


- TCP의 시퀀스 넘버 교환

 명칭

 설명

 Client_My_Seq

 클라이언트가 관리하는 자신의 시퀀스 넘버

 Client_Server_Seq

 클라이언트가 알고 있는 서버의 시퀀스 넘버

 Server_My_Seq

 서버가 관리하는 자신의 시퀀스 넘버

 Server_Client_Seq

 서버가 알고 있는 클라이언트의 시퀀스 넘버

 Data_Len

 데이터의 길이


시퀀스 넘버에 따른 TCP 연결 상태는 동기화와 비동기화 두 가지다.

정상적인 접속일 경우 시퀀스 넘버는 동기화 상태에 있으며, 클라이언트가 가진 시퀀스 넘버를 서버가, 서버가 가진 시퀀스 넘버를 클라이언트가 정확히 알고 서로 일치한다.


① 연결이 되기 전 클라이언트의 포트는 Closed 상태

    서버는 서비스를 제공하기 위해 기다리는 Listen 상태

② 클라이언트는 32비트 숫자 중 임의의 숫자( Client_My_Seq )를 생성하여 서버에 SYN 패킷을 보냄

    서버는 클라이언트가 보낸 Cient_My_Seq 값을 읽어 Server_Client_Seq 값으로 저장

    이때 클라이언트는 SYN_Sent 상태

③ 서버는 Server_My_Seq 값을 생성하고, Server_Client_Seq에 패킷의 길이만큼 더해 클라이언트로 보냄

    여기서 데이터는 0이므로, 단지 +1 이라고만 표시

    이때 서버는 SYN_Received 상태

    클라이언트는 Server_Client_Seq+1 을 받음

    자신의 Client_My_Seq와 비교하고 일치하면 Server_My_Seq 값을 Client_Server_Seq 값으로 저장

④ 클라이언트는 Client_Server_Seq+1을 서버에 보내고 Established 상태

    서버는 클라이언트가 보낸 Client_Server_Seq+1과 Server_My_Seq와 비교 일치하면 Established 상태


이렇게 동기화가 되면 다음과 같은 상태가 된다.

Client_My_Seq = Server_Client_Seq

Server_My_Seq = Client_Server_Seq



- 비동기화 상태

TCP 세션 하이재킹은 동기화 상태를 무너뜨리는 것에서 시작한다. 즉, 서버와 클라이언트를 비동기화 상태로 만들어야 한다.


① 데이터가 전송되기 전까지는 안정적인( stable ) 상태

Client_My_Seq ≠ Server_Client_Seq

Server_My_Seq ≠ Client_Server_Seq

② 데이터가 전송될 때는 다음과 같은 상태의 데이터가 차후 사용을 위해 저장되지만 클라이언트에 서버의 승인 번호는 전달되지 않음

Server_Client_Seq < Client_My_Seq

Clinet_My_Seq < Server_Clinet_Seq + Data_Len

③ 패킷 수신이 불가능한 상태로, 데이터도 버려짐

Server_Client_Seq + Data_Len < Clinet_My_Seq

Client_My_Seq < Server_Client_Seq


- 비동기화 상태로 만드는 방법

> 서버에서 초기 설정 단계의 접속을 끊고 다른 시퀀스 넘버로 새로 접속을 생성

> 대량의 널( Null )데이터를 보냄


- 새로운 접속 생성하기

TCP를 이용한 세션은 네 가지 요소( 클라이언트의 IP 주소와 포트번호, 서버의 IP 주소와 포트번호 )로 이루어짐

먼저 서버와 클라이언트가 각자 알고 있는 시퀀스 넘버를 조작해서 속인 후 다음과 같은 상황을 만든다.

> 클라이언트측

Client_My_Seq = 공격자가 생성한 Server_Client_Seq

Client_Server_Seq = 공격자가 생성한 Server_My_Seq

>서버측

Server_Client_Seq = 공격자가 생성한 Client_My_Seq

Server_My_Seq = 공격자가 생성한 Client_Server_Seq


① 클라이언트는 서버와 모두 접속되어 있는 Establised 상태

    공격자는 적절한 시퀀스 넘버를 획득하기 위해 스니핑

② 공격자는 공격하려는 시점에 세션이 완전히 끊어지지 않는 시퀀스 넘버의 범위에서 RST 패킷을 서버에 보냄

    서버는 잠시 Closed 상태

    클라이언트는 그대로 Established 상태

③ 공격자는 A_Client_My_Seq를 생성하여 서버에 보냄

④ 서버는 새로운 A_Client_My_Seq를 받아들이고, Server_My_Seq를 재생성해 공격자에게 보냄

    서버는 SYN_Received 상태

⑤ 공격자는 정상 연결처럼 서버와 시퀀스 넘버를 교환하고, 공격자와 서버 모두 Established 상태가 된다.

    원래의 클라이언트는 이 단계까지도 Established 상태

    서버의 네트워크 상태로 인한 잠시 동안의 연결 문제로 인식

    연결은 끊어졌지만 인증 세션은 열린 상태

⑥ 공격자는 공격 전 클라이언트가 서버와 통신을 하던 시퀀스 넘버를 모두 알고 있는 상태

    클라이언트와 정상적으로 통신

    서버와 공격자가 새로 생성한 시퀀스 넘버를 가지고 통신

'NCS보안3기 > 네트워크 해킹' 카테고리의 다른 글

[Network Hacking] MITM  (0) 2017.05.01
[Network Hacking] 스푸핑 공격  (0) 2017.04.30
[Network Hacking] 스니핑  (0) 2017.04.30
[Network Hacking] TCP 스캔  (0) 2017.04.30
[Network Hacking] ICMP스캔  (0) 2017.04.30
Posted by Imp3rio

1. 스푸핑 공격에 대한 이해


스푸핑이란 '속이다'는 의미다. 인터넷이나 로컬에서 존재하는 모든 연결에 스푸핑이 가능하다. 

스푸핑은 정보를 얻어내기 위한 중간 단계의 기술로 사용하는 것 외에 시스템을 마비시키는 데 사용할 수도 있다.



2. ARP 프로토콜


ARP는 IP 주소 값으로 MAC 주소 값을 알아내는 프로토콜이다.

RARP는 MAC 주소 값으로 IP 주소값을 알아내는 프로토콜이다.

동일한 LAN 내에 연결된 컴퓨터의 IP 주소를 얻는다.

목적지 IP에 대한 MAC 주소를 모를 때 발신측 컴퓨터는 목적지 MAC 주소를 브로드캐스트로 설정하고 패킷을 보낸다.

목적지 IP에 대한 MAC 주소를 아는 호스트가 유니캐스트로 탑중을 준다.



3. ARP 캐시 테이블


ARP 캐시는 static type과 dynamic type이 있다.

static type은 고정된 IP, MAC으로 설정한 상태로 유지되지만 재부팅 시 지워진다.

dynamic type은 arp reply로 인해 등록된 IP, MAC으로 부팅하거나 일정시간 후 삭제된다.


'arp -a' 명령은 arp cache table을 볼 수 있는 명령이다.

'arp -d' 명령은 dynamic type cache를 모두 지우는 명령이다.



4. ARP 패킷 헤더

5. ARP 취약점


ARP reply 패킷에 대한 인증을 거치지 않기 때문에 조작된 ARP reply 패킷을 보내 임의로 ARP 캐시 테이블에 Dynamic type의 < IP, MAC > 쌍을 등록할 수 있다.



6. ARP 스푸핑

arpspoof -t [victim ip] [gateway] 의 명령으로 공격할 수 있다.

위 명령을 수행하면 희생자의 ARP 캐시 테이블에 [공격자 MAC : gateway IP]가 추가된다.


- 공격을 수행하기 전( arp -a )

- 공격을 수행하기 전( arp -d 후 arp -a )


- kali에서 ARP 스푸핑 공격 수행

- 공격 당한 상태


희생자는 공격당한 상태에서 인터넷을 접속하려고 하면 접속이 되지 않는다.


그 이유는 게이트웨이의 MAC주소가 공격자의 MAC 주소로 설정됐기 때문에 희생자가 게이트웨이로 패킷을 보내면 실제로는 공격자에게 패킷이 가기 때문이다. 그리고 공격자는 희생자로부터 받은 패킷을 따로 처리하지 않고 기존 게이트웨이에 릴레이 시키지 않으므로 희생자는 인터넷을 이용할 수 없다.


7. ARP 스푸핑 방지


프로토콜단의 취약점이기 때문에 방지가 힘들다.

gateway IP, MAC 주소를 Static type으로 등록한다.

'NCS보안3기 > 네트워크 해킹' 카테고리의 다른 글

[Network Hacking] MITM  (0) 2017.05.01
[Network Hacking] 세션 하이재킹  (0) 2017.05.01
[Network Hacking] 스니핑  (0) 2017.04.30
[Network Hacking] TCP 스캔  (0) 2017.04.30
[Network Hacking] ICMP스캔  (0) 2017.04.30
Posted by Imp3rio

1. 스니핑에 대한 이해


'sniff'를 사전에서 찾아보면 '코를 킁킁거리다'라는 의미다. 코를 킁킁거리듯 데이터 속에서 정보를 찾는 일이라고 생각하면 이해하기 쉽다. 스니핑은 막기가 매우 힘든 공격으로 알려져 있다. 게다가 탐지도 쉽지 않다. 스니핑을 수동적 공격이라고도 말하는데, 이는 공격할 때 아무 것도 하지 않고 조용히 있기만 해도 충분하기 때문이다.


2. 스니핑의 개념


스니핑의 개념을 찾을 수 있는 곳은 많다. 드라마에서 주인공이 문 앞에서 다른 이의 대화를 엿듣는 일, 즉 도청도 일종의 스니핑이다. 즉, 모든 도청과 엿듣기가 스니핑이다.


3. Promiscuous mode


스니핑을 하려면 랜 카드를 스니핑이 가능한 모드로 변경해야 한다. 이를 프러미스큐어스 모드라고 하는데, 이를 정확히 이해하려면 먼저 랜 카드의 정상적인 동작을 이해해야 한다.

모든 패킷은 2계층 정보인 MAC 주소와 3계층 정보인 IP 주소를 가지고 있다. 패킷이 네트워크에 돌아다닐 때, 각 PC는 패킷에 기록된 MAC 주소와 IP 주소를 보고 자신에게 제대로 전달된 것인지 여부를 안다. 정상적인 경우라면 자신의 네트워크 카드로 흘러 들어온 패킷에 기록된 MAC 주소와 IP 주소가 PC의 것과 일치하면 패킷을 분석하여 운영체제에 해당 패킷을 넘겨주고, 다르면 버린다.


하지만 스니퍼는 자신과 다른 MAC 주소와 IP 주소를 가진 패킷이라고 해서 버리지 않는다. 스니퍼는 자신에게 해당 사항이 없는 것을 훔쳐보는 일이 기본이기 때문이다. 패킷의 목적지가 자신이 아니더라도 흘러들어온 패킷을 모두 읽는다. 그러기 위해서는 랜 카드의 MAC 주소나 운영체제에 설정된 IP 주소가 패킷의 MAC 주소나 IP 주소와 달라도 패킷을 버리지 않게 해야 한다. 이처럼 MAC 주소와 IP 주소에 관계없이 모든 패킷을 스니퍼에 넘겨주는 것을 프러미스큐어스 모드라고 한다.


프러미스큐어스 모드는 기본적으로 소프트웨어적인 제어다. 하지만 하드웨어적으로 처리하는 것도 있는데, 이를 바이패스 모드라고 부른다.

'ifconfig' 명령을 사용해 현재 네트워크 카드를 확인한다.


'ifconfig eth0 promisc' 명령으로 eth0 장치를 프러미스큐어스 모드로 바꾼다.



4. 스니핑 공격 툴


- TCP Dump

TCP Dump는 리눅스에서 가장 기본이 되는 스니핑 툴이다. 불법적인 해킹 느낌보다는 관리자 느낌이 강한 스니퍼다. 이는 처음부터 스니핑 툴이 아니라 네트워크 관리를 위해 개발되었기 때문이다.


TCP Dump로 획득한 증거 자료는 법적 효력이 있다. 법적 효력을 발휘하려면 법원에서 인정하는 툴과 규약에 따라야 하는데, TCP Dump는 그 툴에 포함된다. 하지만 컴퓨터로 취득한 대부분의 자료는 재판 과정에서 직접적인 증거로 인정받기 어렵다는 사실을 알아둬야 한다. 위조나 변조는 너무 쉽지만, 이를 알아내기는 너무 어렵기 때문이다.


- Fragrouter

Fragrouter는 직접 스니핑을 하기보다는 스니핑을 보조해주는 툴로, 받은 패킷을 전달하는 역할을 한다. 스니핑을 하거나 세션을 가로챘을 때 공격자에게 온 패킷을 정상적으로 전달하려면 패킷 릴레이가 반드시 필요하다. 공격 대상의 세션이 끊어지면 계속 사용할 수 없어 공격자도 스니핑을 계속 할 수 없다.



5. ARP 리다이렉트와 ARP 스푸핑


ARP 리다이렉트는 공격자가 자신을 라우터라고 속이는 것이다. 사실 스푸핑이라고 해도 틀린 말은 아니다.

ARP 리다이렉트는 기본적으로 2계층 공격이며, 랜에서의 공격이라는 사실에는 변함이 없다.

이 공격은 위조된 ARP Reply 패킷을 보내는 방법을 사용한다. 자신의 MAC 주소가 라우터라며 주기적으로 브로드캐스트하는 것이다. ARP 스푸핑은 호스트 대 호스트 공격인데, ARP 리다이렉트는 랜의 모든 호스트 대 라우터라는 점 외에는 큰 차이가 없다. ARP 스푸핑처럼 공격자 자신은 원래 라우터의 MAC 주소를 알고 있어야 하며 받은 모든 패킷은 다시 라우터로 릴레이 해줘야 한다.


6. Sniffing 공격


- 더미 허브로 연결된 공격자와 희생자 사이에서의 Sniffing 공격

> 공격자 : Kali Linux

> 희생자 : Windows 10

> 공격자는 희생자와 같은 네트워크

> 공격자는 스니핑 중

> 희생자는 kitri 아카데미에 ID: kitri, PW: kitri로 로그인

> 공격자는 패킷을 분셕하여 희생자의 ID/PW 획득



Posted by Imp3rio