Post

[udemy] 화이트 해킹 101: 윤리적 해킹 기초부터 배우기!

신청한 udemy 강의 목록

  • [한글자막] 화이트 해킹 101: 윤리적 해킹 기초부터 배우기!
  • The RedTeam Blueprint - A Unique Guide To Ethical Hacking
  • Learn Python & Ethical Hacking From Scratch
  • Web Security & Bug Bounty: Learn Penetration Testing

아니 원래 가격이 총 다 합해서 330,000원인데 이번에 할인(사실 이게 원가)를 하면서 50,000원이 되었다

세상에 이걸 어떻게 참아

아무래도 관심이 있었던 분야이기에 한번 공부하며 정리해 보기로 했다

[한글자막] 화이트 해킹 101: 윤리적 해킹 기초부터 배우기!

내가 선택한 강의 중에 유일하게 한글자막이 있고 꽤나 느리게 말하기에 편하게 보기 좋을것 같아 처음으로 선택했다

1. 강의 개요

1-1. 맛보기 - 윈도우 11 컴퓨터를 해킹하고 웹캠 액세스하기

말 그대로 강의가 끝나면 어떤 작업들을 할 수 있을지에 관해 미리 보여주는 강의다

wargame을 두루 해봤다면 꽤 익숙한 kali를 이용하는 모습을 볼 수 있다

1-2. 강의 소개 및 개요

강의는 아래와 같이 이루어진다

  1. Network Hacking

네트워크 통신간의 데이터를 가로체거나 변경 등 네트워크에 대해

  1. Gaining Access

서버와 개인 컴퓨터에 액세스 하는 방법 공부

타겟에 대한 정보 확보, 취약점 파악, 공격 및 제어

  1. Post Exploitation

접근에 성공한 후 무엇을 할 수 있는지에 관해

  1. Website Hacking

웹사이트의 동작 방식, 타겟에 대한 정보 취득, 제어

1-3. 해킹은 무엇이며 왜 학습해야 하는가

해킹은 무엇인가?

액세스 할 수 없어야 하는 시스템에 대한 액세스 권한을 획득하는 것

혹은 일반적으로 수행할 수 없는 작업을 수행하는 것

create-react-app을 실행하면 'happy hacking!'이라는 문구가 뜨는데 이건 그냥 '즐겁고 멋지게 문제를 해결하세요!'라는 뜻이라카더라

해커의 3가지 유형

  • Black-hat hacker (불법)

불법적인 목적을 위해 시스템을 해킹

  • White-hat hacker (합법)

블랙햇과 동일하지만 해킹할 권한이 주어진 시스템만 해킹

  • Grey-hat hacker (불법)

권한이 없더라도 시스템을 해킹하지만 돈을 훔치거나 시스템에 피해를 주지는 않는 사람

왜 해킹을 배우는가?

  • 해킹은 이미 구축된 산업이다, 즉 이미 상업적으로 활성화된 직업이 되었다
  • 윤리적 해커를 위한 취직길이 있다 (한국에도 있는지는 의문)
  • 블랙햇 해커로부터 시스템의 보안 안전을 테스트 할 수 있다
  • 실제로 요즘 해킹 공격 횟수가 늘고 있다

2. 해킹 랩(Lab) 설정

나는 평소에 VBox(Virtual Box)를 쓰곤 했는데 이 강의에서는 VMWare를 쓰는 문제가..

하지만 일단 따라가 봅시다

2-1. 업데이트 공지

시간이 지나도 그에 맞게 강의가 업데이트 된다고 한다

아주 좋아요

2-2. 랩(Lab) 개요

랩(Lab)

새로운 것을 발견했거나 테스트 해보고 싶을 때 나만의 테스트 장소인 랩(Lab)

하지만 만약 네트워크 관련 작업을 하거나 웹 서버 공격 테스트를 하게 된다면 그에 맞춘 컴퓨터 혹은 네트워크 시스템을 구축해야 한다

그것을 쉽게 해주는 것이 바로 가상머신(VM)이다

Host Machine에서 내가 하던대로 컴퓨터를 쓰고 그 안에 가상의 컴퓨터들을 만들어 랩을 만들 수 있다

호스트 컴퓨터에는 전혀 영양을 주지 않기에 가상머신이 고장나더라도 snapshot을 이용해 고장나기 전으로 되돌아 갈 수 있다

이번에 우리는

  • Debian
  • Metasploitable
  • Windows10
  • Kali Linux
  • Ubuntu

를 쓴다고 한다

내 노트북에는 이미 Ubuntu와 Kali가 설치되어있지만 네트워크 상에서 해킹하고 외부에 취약한 부분이 드러나지 않으려면 보안적으로도 VM을 사용하는 것이 좋다

2-3. 기초 준비작업

Kali Linux

Debian 기반의 리눅스 배포판으로 여러 해킹 및 침투 테스트를 위한 툴이 미리 설치에어있다

요즘에는 offensive 칼리를 Kali Linux Blue, defensive 칼리를 Kali Linux Purple로 나눠놓았다

여기서는 Blue 버전(강의에서 제공된 버전)을 사용한다

설치를 위해 Virtualization을 사용함으로 설정하라고 하는데 나는 이미 VMBOX 덕분에 활성화 되어있다

2-4. 윈도우에 칼리 리눅스를 가상 머신으로 설치하기

어… 근데 이거 pro 버전인데 설치 해도 되는거 맞나?

아니 뭐야 찾아보니까 Workstation Player가 단종되면서 Pro버전이 개인 무료 사용으로 라이센스가 변경되었다네??

일단 설치는 매우 간단하다 영상 따라 링크 들어가서 VMware 설치하면 된다

그 후에 클릭 엔 드래그 해서 설치하면 끝

중간에 7-zip깔라고 하는데 나는 그냥 bandizip을 사용했다

image

다 좋은데 너무 느리다 2GB메모리는 좀 너무 적었을 지도

음.. 그게 문제가 아닌거 같은데..? 로그인은 되는데 그 이후에 검은 화면만 뜬다

image

역시 GPU가속을 끄니 잘 나온다.. 허.. 혹시했는데 역시네

하도 내가 Kali usb Portable버전만 써서 그런지 되게 이쁘다.. 우분투 삭제하고 갈아탈까 생각이 들 정도

checksum 체크섬 하는법

2-5. mac에 칼리 리눅스 가상머신으로 설치하기

이 부분은 내가 Linux랑 Window만 쓰기에 넘어갔다

2-6. 리눅스에 칼리 리눅스를 가상 머신으로 설치하기

우분투는 노트북에 깔려 있기에 굳이 본 컴퓨터가 아닌 곳에 vm을 깔지는 않을 것이다

3. 리눅스 기초

말 그대로 리눅스 기초에 관한 내용이다

평소에 다른 os를 써본 사람이라면 넘겨도 될 부분이다

3-1. Kali 기초

평생 윈도우만 써와서 리눅스 gui(gnome)에 관해 모르는 사람을 위한 기초적인 강의

3-2. 단말(terminal)과 리눅스 명령어

bash 스크립트를 짜봤다면 패스

pwd : print working directory, 현재 디렉토리 출력

ls : list, 디렉토리 내용 출력

cd : 디렉토리 이동, cd ..으로 루트 폴더로 이동

man : 명령어에 대한 메뉴얼 표시

clear : 터미널 청소

업데이트 ->

1
2
3
4
5
6
7
root일 경우
apt-get update
apt-get upgrade

일반
sudo apt-get update
sudo apt-get upgrade

프로그램 설치 ->

1
apt-get install [프로그램 이름]

리눅스 명령어 모음

나는 tmux를 자주 쓰곤 했는데 이 강의에서는 terminator를 사용한다

1
sudo apt-get install terminator

4. 네트워크 해킹

무선 네트워크 보안 (Wireless Network Security)이라는 매우 정리가 잘 되어있는 블로그를 찾았다

공부할 때 참고하면 좋을 것

4-1. 네트워크 침투 테스트 및 해킹 개요

개인 컴퓨터, 기업 서버, 웹사이트 모두 결국에는 네트워크에 연결되기에 네트워크의 작동 방식에 대한 강의로 시작된다

  1. 네트워크에 연결하기 전에 할 수 있는 공격
  2. 네트워크에 액세스
  3. 액세스 후에 할 수 있는 공격

네트워크를 중간에 가로채거나 그 안에서 전송되는 데이터들을 캡쳐, 변형하여 요청을 제어하거나 악성코드를 삽입하는 등의 작업이 가능해진다

4-2. 네트워크 기초

클라이언트는 엑세스 포인트(AP)(서버혹은 라우터)를 통해서만 네트워크에 접속해서 리소스(데이터)를 가져올 수 있다

1
2
3
4
5
client1---|
          |
client2---|-- Access Point -- Resources
          |
client3---|

연결된 모든 클라이언트가 리소스에 액세스 하려면 라우터를 거치게 되고 데이터(Resources)는 패킷의 형태로 전송된다

스니핑

만약 유선이 아닌 와이파이를 사용하게 된다면 내가 무선 네트워크 카드가 있듯 다른 누구든 무선 네트워크 카드가 있을 것이니 같은 공간 범위 내에만 있다면 모든 요청과 응답을 캡쳐해서 볼 수 있다

아무래도 역시 해킹의 시작은 관심인지라 가장 간단하면서도 확실한 와이파이 해킹을 먼저 시작하게 되는 것 같다

연례행사

4-3. 칼리에 무선 어댑처 연결하기

내가 사용한 어뎁터는

캡처

ipTIME N150UA3 USB 2.0 무선 랜카드 노트북용으로 usb 2.0만 지원하기에 영상과 달리 usb설정을 변경하지 않았다

이거 모니터 모드가 될 지는 의문

image

일단은 연결하지 않았을 때에 무선 네트워크가 없는 모습

image

그리고 연결하면? 아주 잘 나온다

4-4. 맥(MAC) 주소란 무엇이며 어떻게 변경하는가

MAC : Media Access Control - 미디어 액세스 제어

자세한 설명은 맥 어드레스에 정리해 두었다

이번 강의에서는 MAC 주소를 바꾸지만 물론 이것은 물리적 주소를 바꾼 것이 아니기에 컴퓨터(VM)을 끄면 다시 리셋된다

왜 맥 주소를 바꾸려고 할까?

  1. 익명성이 증가한다
  2. 다른 장치를 사칭할 수 있다
  3. 필터를 우회할 수 있다

그럼 이제 직접 MAC주소를 변경해보자

  1. 변경을 위해 장치를 내리기
1
root@kali:~# ifconfig wlan0 down
  1. MAC주소를 변경
1
2
3
4
5
6
7
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ca:82:d7:50:34:09  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

라는 ifconfig결과를 보면 중간에 ether ca:82:d7:50:34:09 이라는 부분이 존재하는데 이게 바로 MAC주소이다

그럼 이제 변경을 위한 명령어를 입력하자

중간에 hw옵션은 우리가 변경할 것이 하드웨어 장치이기에 사용한 것이다

1
root@kali:~# ifconfig wlan0 hw ether 00:11:22:33:44:55
  1. 다시 네트워크 사용
1
root@kali:~# ifconfig wlan0 up

이제 다시 확인해보면?

1
2
3
4
5
6
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:11:22:33:44:55  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

아주 잘 바뀐 것을 알 수 있다

4-5. 무선 모드 (관리 모드와 모니터 모드)

네트워크 상에서 모든 데이터는 패킷의 형태로 전송된다

그 안에는 목적지의 MAC주소 발송지의 MAC주소가 모두 포함된다

무선 네트워크에서 같은 범위 내에 있는 패킷을 캡쳐하기 위해서는 무선 네트워크의 모드를 변경해 주어야 한다

모드 확인을 해보자

1
2
3
4
5
6
7
8
9
10
root@kali:~# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off

지금은 일단 관리(Managed)모드이다

하지만 우리가 네트워크에 돌아다니는 패킷을 캡쳐하기 위해서는 모니터(Monitor)모드로 바꿀 필요가 있다

그를 위해 우리는 먼저 네트워크 데몬을 죽여(kill) 놓을 필요가 있다

1
2
3
4
5
6
7
8
9
root@kali:~# ifconfig wlan0 down
root@kali:~# airmon-ng check kill

Killing these processes:

    PID Name
   1443 wpa_supplicant

root@kali:~# 

그런데..?

1
2
3
root@kali:~# iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Device or resource busy.

어… 장치가 작동중이라는데.. 일단 자료를 찾아보자

찾았다!! github issue 링크

1
root@kali:~# sudo apt install -y realtek-rtl8188eus-dkms

를 통해 드라이버를 추가로 설치하자

1
2
3
4
5
6
7
8
9
10
11
12
root@kali:~# ifconfig wlan0 down
root@kali:~# iwconfig wlan0 mode monitor
root@kali:~# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11  Mode:Monitor  Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          
root@kali:~# 

아주 잘 되었다

분명 전에 작업 할 때에는 되었는데 갑자기 안되서 당황했지만 해결!

마지막으로 ifconfig wlan0 up하는 것은 잊지 말것

5. 네트워크 해킹 - 연결 전 공격

5-1. 패킷 스니핑 기초

이제 모니터 모드로 설정 했으니 공기중 모든 패킷을 캡쳐할 수 있다

패킷 스니핑을 위해 airodump-ng를 사용할 것인데 aircrack-ng안에 포함되어있다

저번에 포트 스캐너를 만들어 봤으니 이번에는 aircrack을 간소하게나마 구현해 보고 싶다

1
root@kali:~airodump-ng wlan0

를 통해 스니핑을 시작하면

image

음.. 왜 많지?

image

분명 핸드폰에서는 두개만 뜨는데 참 이상하다

와중에 저 Samsung StickVacuum는 우리집도 아니고 옆집 무선 청소기이다… 거리가 최소 40M는 되보이는데 이게 잡히네

그리고 나머지는 감도 안 잡힌다.

나는 결과에서

1
 BSSID PWR Beacons #Data, #/s  CH   MB   ENC CIPHER  AUTH ESSID

이 부분에 궁금증이 생겨서 조금 조사를 해봤다

BSSID

Basic Service Set Identifier

와이파이 네트워크에서 특정 무선대역 또는 WLAN에 할당되는 MAC주소를 의미한다

PWR

PoWeR

신호의 세기, 어떻게 보면 거리가 될 수도 있다

조사하는데 자동차 이야기가 먼저 나와서 당황..

Beacons

네트워크에서 보낸 beacon 패킷의 개수

모든 네트워크는 숨겨져있어도 나 살아있어요!패킷을 보내게 된다

#data

캡쳐된 패킷 수

#/S

10초동안 측정한 초당 패킷 수

CH

네트워크가 실행되는 채널

잘 이해가 안되어서 모두의 네트워크 정리 참고

MB

네트워크가 지원하는 최대 속도

ENC

네트워크 암호화 방식

CIPHER

네트워크에 사용되는 암호

ENC랑 분명한 차이가 있다

ENC는 네트워크의 암호화 방식이고 CIPHER는 네트워크에 사용중인 암호의 암호화 방법

AUTH

네트워크에 사용되는 인증방식

ESSID

네트워크의 이름

찾다보니 매우 좋은 사이트를 발견했다

How to sniff Wi-Fi packets using airodump-ng

최고!

5-2. Wi-Fi 대역 - 2.4Ghz & 5Ghz 주파수

와이파이 대역 2.4Ghz와 5Ghz

airodum-ng를 이용해 위와 같이 그냥 입력하게 되면 2.4Ghz대역의 네트워크만 캡쳐하게 된다

5Ghz 대역 캡쳐를 위해 다음과 같이 입력하자

1
root@kali:~# airodump-ng --band a wlan0

그리고 내 랜카드는 5Ghz를 지원하지 않기에

image

아무 결과도 잡지 못한다

모든 대역을 캡쳐하기 위해서는

1
root@kali:~# airodump-ng --band abg wlan0

옵션을 추가해 주면 된다

물론 조금 느려지지만

5-3. 타겟 패킷 스니핑

특정 네트워크의 패킷만을 스니핑 하기 위해서 내 노트북 핫스팟을 이용하기로 했다

image

핫스팟의 BSSID는 32:89:4A:3F:61:4B이니 패킷 스니핑을 해보자

1
root@kali:~# airodump-ng --bssid 32:89:4A:3F:61:4B --channel 6 --write test wlan0

이번에는 –write를 통해 패킷을 test라는 파일에 저장하도록 하였다

image

핸드폰으로 연결하여 패킷을 캡쳐하는데 성공했다

아까 저장한 파일은

1
2
3
4
root@kali:~# ls
Desktop    Music     Templates                         test-01.cap         test-01.kismet.netxml
Documents  Pictures  Videos                            test-01.csv         test-01.log.csv
Downloads  Public    embedded-browser-no-sandbox.json  test-01.kismet.csv

여러 형태로 나누어져 저장되었다

위 패킷을 읽기 위해서는 많은 방법이 있지만 그 중 가장 많이 쓰는 wireshark를 이용한 방법이 있다

5-4. 연결해제 공격(네트워크에서 어떤 기기든 연결 해제하기)

Deauth Attack을 통한 와이파이 무력화에 매우 자세하게 설명되어있기에 추천한다

6. 네트워크 해킹 - 액세스 획득 - WEP 해킹

6-1. 액세스 획득 소개

이번 섹션에서는 네트워크가 암호화를 쓸 때 그 암호화를 뚫고 액세스 하는 방법을 배우게 된다

예를 들어 WEP, WPA, WPA2 등의 암호화 방법일 때

6-2. WEP 암호화 해킹 이론

Wired Equivalent Privacy

오래된 방법이지만 아직도 쓰이는 곳이 있다

WEP는 보통 RC4라고 불리는 암호화 방법을 사용한다

쉽게 설명하자면

  1. Hello world라는 문장을 가진 데이터가 있다고 했을 때 이 데이터를 를 가지고 ADLKFJLD이런식의 암호화된 데이터로 변경한다

  2. 그리고 이 패킷이 공중을 타고 날아가면 다시 AP(Access Point), 보통은 라우터에서 다시 를 이용해 원래 데이터로 변경하여 읽는다

라우터에서 클라이언트로 데이터를 전송할 때에도 동일하다

특징은 양 쪽 모두에게 키가 있어야 한다 그래야 키가 없는 사람은 데이터를 찾아내도 데이터를 열어볼 수 없으니까

좀 더 상세하게 설명하면

  1. WEP는 공기중에 전송되는 모든 데이터 마다 고유한 키를 생성한다. 그걸 위해 24비트짜리 랜덤 값을 가진 초기화 벡터(IV)를 만든다
  2. 그리고 이 IV를 사용자가 네트워크에 연결할 때 사용하는 암호 앞에 붙이는데 이 키 스트림을 패킷의 암호화에서 사용한다

예를들면

IV + Key(password) = Key stream

의 과정으로 키 스트림을 만들고

KeyStream + “Hello World”를 합쳐서 ADLKFJLD가 되는 식이다

  1. 데이터를 전송할 때에는 라우터가 데이터를 복호화 할 수 있도록 데이터 앞에 초기화 백터(IV)를 붙여서 전송하게 된다
1
2
3
IV
-----
ADLKFJLD

여기서 문제가 생긴다

바로 IV는 암호화 되지 않았다는 것이다

심지어 24비트로 길이가 정해져 있다!

만약 트래픽이 많은 네트워크가 있다면 중복된 초기화 벡터가 많아질 테니 통계적 분석 공격에 취약해 진다

아니 처음에 사람들은 어떻게 이걸 생각해냈지? 진짜 뚫는 사람도 대단하고 막아내려고 고안한 사람도 대단하다… 멋있다

6-3. WEP 해킹 기초

WEP 해킹을 하기 위해서는 위에서 말했듯이 네트워크에 트래픽이 많아야 한다

그래야 많은 패킷을 얻어내고 그러면 중복된 IV값이 늘어나니 통계 분석 공격을 하기 용이해 진다

패킷을 캡쳐 하기 위해서는 airodump-ng를 사용하고

패킷을 분석하기 위해서는 aircrack-ng를 사용한다

어.. 영상을 따라가며 테스트를 위해 WEP 네트워크를 하나 만들려고 했는데 일단 윈도우로는 아무리 핫스팟을 만들어도 암호화 종류를 설정할 수가 없다. 일단은 한번 우분투로 가서 보자

image

아.. 안되나? 왜 설정에 WEP가 없을까…

image

아하 내 랜카드가 애초에 WEP를 지원을 안하네… 심지어 iptime도 지원을 안한다. 허… 옛날 카드가 남아있는지 찾아봐야겠다

WEP 300Mbps 11n USB무선 랜카드

image

판매를 봤을 때는 된다고 써있는데 어쩌면 ubuntu에서 막는 걸지도

와 깜짝이야 우분투 용량에 의한 검은화면 부팅 문제가 갑자기 발생하는 바람에 일단 글 쓰는 것을 잠깐 중단했다

그렇게 위 문제를 해결한 뒤 찾다 찾다 WEP 생성에 관한 내용을 못찾겠어서 Chat GPT에게 물어보니

WEP(Wired Equivalent Privacy)은 보안성이 낮아, 현대 운영체제에서 기본적으로 지원되지 않습니다. WEP는 여러 보안 취약점으로 인해 쉽게 해킹될 수 있기 때문에 대부분의 운영체제는 WPA(Wi-Fi Protected Access)와 WPA2, WPA3 같은 더 안전한 암호화 방식을 기본적으로 사용하고 있습니다.

그럼에도 불구하고, 특정한 목적으로 WEP를 사용해야 하는 경우, 다음과 같은 방법으로 설정할 수 있습니다.

1. Ubuntu에서 WEP 설정하기

Ubuntu에서는 hostapd를 사용하여 핫스팟을 설정할 수 있습니다. hostapd는 기본적으로 WPA를 사용하지만, 구성 파일을 수동으로 편집하여 WEP를 설정할 수 있습니다.

  1. Hostapd 설치
    1
    
    sudo apt-get install hostapd
    
  2. 구성 파일 설정 /etc/hostapd/hostapd.conf 파일을 편집합니다.
    1
    
    sudo nano /etc/hostapd/hostapd.conf
    

다음 내용을 추가하여 WEP를 사용하도록 설정합니다.

1
2
3
4
5
6
7
interface=wlan0
ssid=YourSSID
hw_mode=g
channel=1
auth_algs=1
wep_default_key=0
wep_key0=1234567890

여기서 wlan0는 네트워크 인터페이스의 이름이며, wep_key0는 10자리의 WEP 키입니다.

  1. Hostapd 시작
    1
    
    sudo systemctl start hostapd
    
  2. Hostapd 상태 확인
    1
    
    sudo systemctl status hostapd
    
  3. Hostapd 종료
    1
    
    sudo systemctl stop hostapd
    

위와 같은 작업을 통해 해결할 수 있다고 한다

추가적으로 자동시작되는 것을 막기 위해서는

1
sudo systemctl disable hostapd

실행하면 ubuntu에서는 아래와 같이 실행된다

image

그 후 vm칼리에서 모니터 모드로 설정 후

image

airodum-ng를 통해 캡쳐해보면

어.. 없다.. 그 이유를 찾기 위해 다시 우분투로 가보면

1
2
3
4
5
6
7
8
9
10
 8월 28 22:19:09 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: disassociated
 8월 28 22:19:09 seolhwa systemd[1]: Started hostapd.service - Access point and authentication server for Wi-Fi and Ethernet.
 8월 28 22:24:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: deauthenticated due to inactivity (timer DE>
 8월 28 22:24:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: disassociated
 8월 28 22:29:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: deauthenticated due to inactivity (timer DE>
 8월 28 22:29:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: disassociated
 8월 28 22:34:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: deauthenticated due to inactivity (timer DE>
 8월 28 22:34:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: disassociated
 8월 28 22:39:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: deauthenticated due to inactivity (timer DE>
 8월 28 22:39:27 seolhwa hostapd[17589]: wlo1: STA 50:46:ae:d4:c3:1a IEEE 802.11: disassociateds

계속 시도는 하는데 WEP를 생성하지 못한다

그럼 다른 랜카드로 테스트를 해봐야겠지?

바꾸자 마자

Screenshot from 2024-08-28 09-46-55

바로 잡혔다

아주 기분이 좋다 해결했다 이거야!!!

그럼 이제 다시 강의를 따라가보자

이제 wep 네트워크를 생성했으니 타겟 네트워크만 캡쳐하기 위해 옵션을 추가하자

1
root@kali:~# airodump-ng --bssid 00:1E:A6:B0:01:E3 --channel 1 --write basic_wep wlan0

Screenshot from 2024-08-28 09-54-54

하지만 나는 네트워크에 다른 기기를 연결하지 않았기에 현재 #DATA부분에 보이는 데이터 전송량이 0이다

원래 6-3 강의에서는 이미 데이터 패킷이 많을 때에 캡쳐해서 데이터를 처리하는 방식을 공부하고 그 후에 나올 6-4 강의에서 강제로 데이터를 생성해내어 그 패킷을 검출하는 작업을 할 것이다

Screenshot from 2024-08-28 10-01-56

일단 지금 만들어진 패킷을 통해 검사를 해 보았을 때에는 역시 데이터가 오간 것이 없으니 검출되는 것도 없다

6-4. 가짜 인증 공격

딱히 네트워크 상에 데이터가 오가지 않고 있다면 우리는 어떻게 암호를 해독할 수 있을까?

바로 강제로 데이터를 만들어 내게 하면 된다!

우리가 필요한건 IV니까 사실 굳이 데이터가 포함되어있을 필요는 없다

여기에는 한가지 문제가 있다

  1. AP(Access Point)는 연결되어있지 않은 기기의 요청은 무시해 버린다, 또한 결합(Associate)되지 않은 기기 또한 마찬가지이다

여기서 잠깐 연결(Connect)은 비밀번호를 입력해 통신하는 것이고 결합(Associate)은 그저 AP에게 “나는 너와 연결을 하고 싶어! 그러니 내 요청을 무시하지 말아줘!”라고 말하는 것이다

우리가 AP에 처음 연결할 때 PW를 칠 탠데 만약 PW가 틀렸다 하여도 AP에서 “너 비밀번호 틀렸어” 라고 답장이 온다 이것이 바로 결합(Associate)이다

Screenshot from 2024-08-28 10-19-49

그럼 이제 가짜 인증 공격(FakeAuthenticate)을 할 차례다

위 창부터 설명하자면

  1. 노트북에서 만든 WEP 네트워크 캡쳐중
  2. aireplay-ngfakeauth공격, 사용법은 아래에
  3. 무선 어댑터 맥 주소를 가져오기 위한 작업, unsepec 혹은 ether 다음에 나오는 12자리 숫자를 이용한다
1
aireplay-ng --fakeauth [횟수] -a [타겟 맥 주소] -h [내 무선 어뎁터 주소] [모니터 모드 활성화된 무선 어뎁터]

Screenshot from 2024-08-28 10-25-59

연결을 시작하게 되면 맨 처음 프롬프트의 AUTHOPN즉 OPEN으로 바뀌었음을 알 수 있다

이렇게 우리는 AP와 결합되었다!

6-5. ARP 요청 리플레이 공격

결합에 성공했으니 이제 AP와 통신은 가능해졌다

이제 패킷을 트래픽에 주입시켜서 AP가 강제로 IV를 가진 새로운 패킷들을 만들어 내게 할 수 있다

그것을 위해 이번 강의에서는 ARP(Address Resolution Protocol) 요청 리플레이 공격을 이용할 것이다

ARP에 관한 자세한 설명은 좋은 블로그가 있어 참고한다

강의를 보니 나중에 추가 설명을 한다고 한다

Screenshot from 2024-08-28 10-34-13

사용법은 거의 FakeAuth랑 비슷하다

1
aireplay-ng --arpreplay -b [타겟 맥 주소] -h [내 무선 어뎁터 주소] [모니터 모드 활성화된 무선 어뎁터]

이렇게 하면 내 무선 어댑터가 ARP 패킷을 기다리다가 만약 네트워크 상에 ARP 패킷이 전송되었다는 것이 보이면 그것을 캡쳐하고 재전송 하게 된다

그 후에는 AP가 계속해서 새로운 패킷과 새로운 IV(초기화 벡터)를 계속해서 만들어내게 된다

이제 기다리면 한번이라도 ARP 패킷을 찾아내게 되면 그 때부터 arpreplay가 시작될 것이다

만 아무래도 라우터가 아니라 내가 직접 만들었다보니 아예 패킷이 없어 시작도 못했다

Screenshot from 2024-08-28 10-43-43

하지만! 핸드폰으로 잠시 연결해서 성공했다

그렇게 생성된 파일을 aircrack-ng를 통해 해독해보면?

Screenshot from 2024-08-28 10-46-14

비밀번호가 12:34:56:78:90이라고 한다

원래는 1234567890이지만 저 상태로 입력하여도 놀랍게 연결이 된다

7. 네트워크 해킹 액세스 획득 - WPA - WPA2 해킹

7-1. WPA와 WPA 2 해킹 소개

지금까지는 가장 초기에 만들어 졌던 WEP 네트워크를 뚫는 방법 중 하나를 알아봤고

이제는 WPA,WPA2에 관해 알아볼 차례이다

그 둘은 매우 비슷한 면이 있지만 WPA가 사용하는 메시지 암호화 방법은 TKIP(Temporal Key Integrity Protocol)이고 WPA2가 사용하는 방식은 CCMP(Counter Mode with Cipher Block Chaining Message Authentication Code Protocol)이다

이번에는 WPA, WPA2를 해킹하는 과정을 다루기 전 키를 연결하지 않고 기기를 연결할 수 있는 WPS(Wi-Fi Protected Setup)에 관해 먼저 알아보게 된다

프린터기와 같은 기기의 WPS 버튼을 누르고 라우터의 WPS 버튼을 누르면 키 없이도 바로 연결할 수 있다

WPS는 8개의 숫자로 이루어진 PIN을 이용하게 되는데 주변 기기를 간단하게 연결하기 위한 용도로 만들어져 있다

사실상 8자리로 이루어진 비밀번호인 셈

하지만 이 방법을 사용하려면 네트워크에 WPS가 활성화 되어있어야 한다. 게다가 버튼을 눌렀을 때 작동되는 것이 아니라 PBC(Push Button Authentication) 방식으로 되어있어야 무차별 대입법을 시도했을 때 라우터가 PIN을 거절하지 않게 된다

WPA나 WPA2는 보안이 강하고 뚫기 힘들기에 먼저 WPS를 확인해 보길 권장한다

7-2. 사전 파일 없이 WPA 및 WPA 2 해킹하기

시작하기 전 또다시 노트북 UBUNTU에서 hostapd를 이용해 WPS를 활성화 해주자

나의 우분투 버전은 다음과 같다

1
2
3
4
Distributor ID:    Ubuntu
Description:    Ubuntu 24.04.1 LTS
Release:    24.04
Codename:    noble

WPS hostapd 설정하기

/etc/hostapd/hostapd.conf파일은 다음과 같다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 기본 설정
interface=wlan0
ssid=YourSSID
hw_mode=g
channel=6
wpa=2
wpa_passphrase=YourPassphrase
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
auth_algs=1
wmm_enabled=1

# WPS 설정
wps_state=2
ap_setup_locked=0
uuid=12345678-9abc-def0-1234-56789abcdef0
device_name=YourDeviceName
manufacturer=YourManufacturer
model_name=YourModelName
model_number=123
serial_number=1234567890
device_type=6-0050F204-1
os_version=01020300
config_methods=label push_button keypad
eap_server=1

설정에 관해 이야기 해보자면

wps_status

0 : WPS 비활성화</br> 1 : WPS 활성화 (AP 연결됨)</br> 2 : WPS 활성화 (AP는 비연결 상태)

ap_setup_locked

0 : AP 설정이 잠겨있지 않음 (WPS 사용 가능)</br> 1 : AP 설정이 잠겨있음 (WPS 사용 불가)

uuid

AP의 고유 식별자

device_name

WPS를 통해 연결할 때 표시될 장치 이름

manufacturer

AP 제조사의 이름 지정

필요 x

model_name

AP의 모델 이름 지정

필요 x

model_number

AP의 모델 번호

필요 x

serial_number

AP의 시리얼 번호

필요 x

device_type

AP의 장치 유형

이해가…

os_version

AP가 실행중인 운영 체제의 버전

노트북 핫스팟인뎅..

config_methods

WPS 연결 시 사용할 수 있는 인증 방법 지정

label : 라벨에 인쇄된 PIN을 사용한 방법</br> push_button : WPS 버튼을 사용한 방법</br> keypad : 키패드를 통해 PIN을 입력하는 방법

한번에 config_methods=label push_button keypad로 전부 사용도 가능하다

eap_server

EAP(Extensible Authentication Protocol) 서버 기능을 활성화

0 : EAP 서버 비활성화</br> 1 : EAP 서버 활성화

연결

그럼 이제 정말로 연결해보자

Screenshot from 2024-08-29 00-46-50

1
wash --interface [모니터 모드가 활성화된 무선 어뎁터]

잘 잡힌 것을 확인했고

Lck : WPS의 잠김 상태 확인

이후 작업을 하기 전 먼저 Fake Authenticate 공격으로 네트워크와 결합한다

만 일단 그 전에 reaver를 이용하여 PIN을 통한 무차별 대입을 할 것이다

1
reaver --bssid [타겟 맥 주소] --channel [채널] --interface [무선 어뎁터] -vvv --no-associate

마지막 -vvv는 혹시 모를 상황에 대비하여 더 많은 정보를 주는 옵션이다

또한 --no-associate를 이용해서 우리는 따로 aireplay-ng를 통해 결합할 것이기에 일단 reaver에게 따로 결합하지 말라는 옵션을 준다

Screenshot from 2024-08-29 01-08-13

그런데 내가 시도해 보았을 때에는 락이 안걸렸음에도 오류가 나서 이상하여 다시 찾아보니

wps 핀은 따로 설정해 줘야 하는 거였다…

WPS PIN 설정

1
sudo hostapd_cli wps_pin any 12345670 0

any : 어떤 클라이언트든 접속 할 수 있게

12345670 : 핀

0 : 핀은 원래 만료되는 시간이 있지만 여기서는 만료되지 않게 설정

hostapd.conf 파일 변경

맨 아래 줄에 ctrl_interface=/var/run/hostapd 추가하기

PIN 확인

sudo hostapd_cli wps_get_status

삭제

sudo hostapd_cli wps_pin any

다시시작

sudo systemctl restart hostapd

image

이렇게 나오면 성공

혹은

hostapd.conf PIN추가

ap_pin=비밀번호

이제 정말로 시작해보자

Screenshot from 2024-08-29 01-25-39

그렇게 한 평생이 지난 후

일단 지금은 잠시 멈췄다

아니 영상에서는 29초인데 나는 10분이 지나도 찾지를 못했다

끙… 일단 이것저것 세팅도 바꿔보면서 해결해 보려 하였지만 일단 나는 노트북 하스팟을 이용한 WPS 생성에는 실패한 듯 하다

image

Note:- If got an error send_packetcalled from resend_last_packet() send.c:161 then it is a bug in a newer version of reaver download the older version and try again.

버그라고 한다

아놬ㅋㅋㅋㅋㅋㅋㅋ

아무래도 내가 처음 vm을 깔고 강의 만든 사람이 kali 버전을 따로 만들어 놓았는데 내가 sudo apt-get update를 하는 바람에 업데이트가 되서 생긴 문제인가 보다

일단 다음 단계로 넘어가자

7-3. 핸드셰이크 캡쳐하기

WPA에 관하여

와이파이 암호법

만약에 WPS가 타겟 네트워크에 활성화 되어있지만 PBC가 활성화 되어있다면 7-2에서 시도한 방법은 통하지 않을 것이다

그렇기에 직접 WPA/WPA2를 뚫어야 할 수밖에 없다

하지만 WPA/WPA2WEP를 강화시킨 버전으로써 우리가 WEP에서 썼던 방법을 사용할 수는 없다

WPA/WPA2의 키는 WEP와 달리 고정된 암호키를 사용하는 것이 아니라 암호키 동적변경(TKIP)/(AES)를 사용하기에 캡쳐한 데이터에서 통계분석기법을 사용할 수 없다

이번 강의에서 사용하게 될 것은 바로 handshake 패킷이다

이 패킷들은 네트워크에 연결하려는 클라이언트와 라우터 사이에서 주고 받는 패킷이다

무선 랜 해킹이라는 좋은 블로그를 발견했다

강의에서 너무 설명을 간단히 하는 바람에 왜 handshake패킷을 쓰는지, 그 패킷이 어떤 식으로 구성되어있는 지에 관해 나와있지 않아 위 블로그를 참조한다

실습 전 세팅

image

Screenshot from 2024-09-01 00-47-00

이번에는 다행히 UBUNTU의 핫스팟은 ENCWPA3, AUTHSAE로 찍히길래 또 따로 설정해 줘야 하나 생각했지만 다행히 윈도우 핫스팟은 강의에 필요한 WPA2,PSK의 조건을 모두 갖추고 있었다

나중에 무선 네트워크 보안쪽을 더 많이 공부하게 된다면 tplink공유기라도 하나 사둬야 겠다

실습

Screenshot from 2024-09-01 00-52-25

채널 6번에 있는 타겟의 네트워크를 캡쳐하며 wpa_handshake라는 이름으로 캡쳐한 패킷을 저장한다

실행 후 만약 핸드셰이크가 캡쳐 되었다면 airodump-ng에서 WPA handshake라며 알려줄 것이다

하지만 누군가 연결할 때까지 기다리는 것도 오래 걸리고 직접 한번씩 연결하자니 그것도 오래 걸린다

그렇기에 저번에 해봤던 deauth(인증 해제 공격)을 통해 자동으로 핸드셰이크를 만들어내자

Screenshot from 2024-09-01 01-00-27

참고로 여기서 아래 연결되어있는 것은 내 핸드폰이다

Screenshot from 2024-09-01 01-02-05

공격을 하고 나면 핸드셰이크를 캡쳐했다는 문구가 보인다

7-4. Word List 만들기

위에서 우리는 핸드셰이크 패킷을 캡쳐했었다

이번에는 이 패킷을 이용할 것인데 사실 패킷 자체로써는 WPA 키를 얻거나 계산하는 데에는 도움이 되진 않고 이것을 이용해서 비밀번호가 맞는지 틀리는지를 판단할 때 사용된다

그러면 어떤 비밀번호가 맞는지 판단을 위해Word List(사전 파일)를 통해 brute force를 해야한다

사전 파일에 담긴 비밀번호를 하나씩 핸드셰이크 정보와 함께 비교하며 비밀번호가 맞는지 틀리는지를 확인하는 것이다

이런 사전 파일은 인터넷에 실제 사용된 비밀번호를 통계로 정리된 것들도 있으니 사용할 수 있다

하지만 여기서는 사전파일을 직접 만들어보기로 할 것이다

강의에서는 crunch를 사용했다

crunch [min글자수][max글자수][비밀번호에 사용될 문자들] -t [pattern] -o [filename]

이런 식으로 쓰이게 된다

Screenshot from 2024-09-01 01-13-18

그리고 누르는 순간 뭔가 잘못되었다는 것을 알았다 112GB라뇨 선생님 이건 아니잖아요

라고 하기에는 조합이 길어서 그럴만 해…

일단은 그냥 강의를 따라가자

Screenshot from 2024-09-01 01-15-14

그래 이게 맞지 4MB

하지만 이 목록에는 내가 설정한 핫스팟 비밀번호인 testpwd0123이 없기에 직접 한줄 추가해주자

1
root@kali:~# sed -i "$(( $(wc -l < test.txt) / 2 ))i testpwd0123" test.txt

Screenshot from 2024-09-01 01-20-11

잘 들어가 있다

7-5. 워드리스트 공격을 이용해 WPA 및 WPA2 해킹하기

aircrack-ng를 이용하면 핸드셰이크 패킷에서 필요한 정보를 추출할 수 있다

그 내용 중에는 MIC (Message Intergrity Code)가 있는데 이것은 바로 AP가 비밀번호가 유효한지 아닌지 확인할 때 사용하는 값이다

그리고 우리는 그 외의 모든 다른 정보와 위에서 만든 사전 파일(Word List)를 조합해서 MIC를 생성해낸다

그리고 이 MIC가 핸드셰이크 패킷에 존재하던 MIC와 동일하다면 그 때 사용된 단어가 바로 네트워크의 비밀번호인 셈이 된다

image

설명을 돕기 위해 사진을 가져왔다, 문제시 삭제할 것이다

하지만 만약에 사전 파일에 맞는 비밀번호가 없다면? 당연히 실패하게 된다

Screenshot from 2024-09-01 01-32-25

aircrack-ng [캡쳐한 패킷.cap] -w [사전파일]

사용해보면?

Screenshot from 2024-09-01 01-33-22

이런식으로 조합해서 맞는 비밀번호를 찾기 시작한다

Screenshot from 2024-09-01 01-34-54

그리고 발견했다면 KEY FOUND!라며 맞는 암호를 알려준다

성공!

이제 다음으로 넘어가자

8. 네트워크 해킹 - 액세스 획득 - 보안

8-1. 해커로부터 네트워크 보호하기

이 부분은 글로 되어있다

일단 결론 부분만 이야기 하자면

  1. WEP 암호화는 패스워드의 복잡성과 상관없이 네트워크에 연결하지 않고도 풀 수 있으니 사용하지 말자
  2. WPA2는 사전파일을 통한 기법을 사용하므로 비밀번호를 어렵게 설정하자
  3. WPS기능에 무차별 대입법을 통해 WPA2의 키를 알아낼 수 있으니 비활성화 해놓자

라는 이야기이다

8-2. 무선 설정 구성하여 보안 극대화하기

지금까지는 공격하는 방법에 대해 알아봤으니 이번 영상에서는 네트워크 설정을 통해 보안을 강화하는 방법에 대해 알려준다

여기서는 라우터 마다 설정방법이나 설정 가능한 기능이 다들 다르기 때문에 굳이 설명하지 않겠다

8-1에서 설명한 것들을 라우터에 설정하는 과정이다

9. 네트워크 해킹 - 연결 후 공격

이제부터는 네트워크에 접속한 후에 할 수 있는 공격에 관해 알아볼 차례이다

타겟이 와이파이이 혹은 이더넷 네트워크든 상관 없이 네트워크에 접속 할 수만 있다면 이제부터 할 강의 내용을 따라갈 수 있을 것이다

일단 네트워크에 접속하게 되면 같은 네트워크에 접속한 모든 클라이언트의 세부 정보를 수집 할 수도 있고 데이터를 중간에 가로체 인터넷에서 사용하는 모든 정보(비밀번호, 접속목록 등)을 볼 수 있다

심지어 무선 네트워크라면 전송되는 데이터를 변경하여 악성 코드를 주입할 수도 있다

이를 위해 VM에서 windowskali를 서로 연결해 연습할 수도 있고 실제 wifi와 실제 컴퓨터를 대상으로 연습할 수도 있다

강의에서는 두 방법 모두 연습해 본다고 한다

10. 네트워크 해킹 - 연결 후 공격 - 정보 수집

10-1. Windows 가상 컴퓨터를 설치하는 방법

타겟이 될 windows10을 vm에 설치하는 과정입니다

10-2. 애플 실리콘에 가상 머신으로 윈도우 설치하기

하지만 나는 윈도우나 리눅스죠?

10-3. 같은 네트워크에 연결된 기기를 확인하는 방법

정보수집 단계 중 연결된 네트워크 확인

만약 해킹하려는 타겟이 우리가 연결한 네트워크 중 하나라면 우리가 그 타겟을 해킹하기 위해서는 그 네트워크에 연결된 클라이언트가 어떤 것들이 있는지 알아야 할 것이다

IP주소와 Mac주소, OS, 열린 포트 등의 정보를 확인해야 한다

그것을 해주기 위한 프로그램들에는 netdiscovernmap과 같은 툴들이 있다

(강의에서는 자꾸 nmap의 자막이 Enmap으로 나온다)

이번 단계에서는 일단 netdiscover를 통해 연결되어있는 네트워크를 스캔하는 작업을 먼저 해본다

그리고 다음 단계에서는 더욱 상세한 정보수집을 한다

Screenshot from 2024-09-01 07-20-38

일단 현재 내 VM칼리는 192.168.12.129가상 네트워크에 물려있다

netdiscover의 기본적인 사용 방법은 다음과 같다

1
netdiscover -r [아이피 범위] 

나는 여기서 아이피의 범위를 192.168.12.1/24으로 주어 192.168.12.1부터 192.168.12.254까지 스캔하였다

왜 이렇게 범위가 주어지는지에 대해 의문이 든다면 CCNA 공부를 위해 - 네트워크 기초 부터 스위치까지를 읽고 오면 좋다

Screenshot from 2024-09-01 07-31-02

스캔을 해보았을 때 일단 vmware에 걸쳐있는 네트워크들이 보인다

Screenshot from 2024-09-01 07-33-22

문제될 것은 없겠다만 혹시 몰라서 무선 네트워크에 관련된 내용은 지웠다

Screenshot from 2024-09-01 07-45-18

강의에서는 nediscover -r [아이피 범위]만으로 무선 네트워크 스캔을 진행하였지만 나는 그것이 되지 않아 -i 옵션을 추가하여 네트워크 장치를 특정해주었다

netdiscover -i wlan0 -r [아이피]/24

결과는 위에 보이다 싶이 4개의 네트워크를 찾아낼 수 있었다

아마 2번은 CCTV이고 그 외에는 감이 안온다

너네 누구니?

Screenshot from 2024-09-01 07-50-28

아마 내 아이폰을 연결한 후 스캔하엿을 때 Unknown vendor가 하나 추가된 걸 보면 아이폰의 비공개 Wi-Fi 주소가 설정되어 저렇게 뜨는 것 같다

왜 저런 기능을 넣어뒀을까 했는데 꽤나 좋은 기능이다

10-4. 4_연결된 기기에 관련된 민감한 정보를 수집하는 방법(기기 이름, 포트 등)

이번 강의에서는 nmap을 사용할 것이다

nmap을 통해 알수 있는 것들

  1. open ports : 열린 포트
  2. running services : 실행되고 있는 서비스
  3. operating system : os정보
  4. connected clients : 연결된 클라이언트

등이 있다

어떻게 nmap이 작동되는 것일까 하는 생각에 두번이나 포트 스캐너를 만들 시도를 해본적이 있다

당연히 nmap보다 성능은 떨어지지만 그 과정에서 많은 것을 알게 되었다

[shell script] 포트 스캐닝 (TCP)

[C,C++] 포트 스캐닝 (Synscan, full-open-scan)

이번 강의에서는 nmap의 GUI툴인 zenmap을 사용한다고 한다

Screenshot from 2024-09-01 08-05-53

실행법은 매우 간단하다 zenmap딱 이 글자만 프롬프트에 입력하거나 그냥 앱을 찾으면 된다

Screenshot from 2024-09-01 08-07-35

Target : 스캔하고자 하는 타겟을 의미

image

Profile : 스캔 방법

nmap을 자주 사용하였던 사람이라면 본인이 자주 쓰는 nmap커맨드 옵션이 존재하겠지만 아직 익숙하지 않은 사람들을 위해 Command에 들어갈 옵션을 zenmap에서 정리해 놓았다

Screenshot from 2024-09-01 08-10-33

Ping 스캔을 한 결과이다

Host칸에는 스캔에서 나온 호스트들의 결과가 나와있다

Nmap Output에는 프롬프트를 통해 nmap을 사용하였을 때의 결과가 출력된다

Screenshot from 2024-09-01 08-12-22

Quick scan의 결과이다

보아하니 VMware네트워크를 스캔하여 열린 포트와 포트에서 사용하고 있는 SERVICE를 출력해주었다

nmap이 가진 기능은 매우 많기 때문에 더 알고 싶다면 인터넷에 찾아보는 것을 추천한다

심지어 nmap은 스크립트를 만들어 실행할 수도 있기에 정말 무궁무진하다

10-5. 5_더욱 더 민감한 정보를 수집하는 방법(실행 중인 서비스, 운영체제 등)

zenmap의 Quick scan plus기능

Screenshot from 2024-09-01 08-23-55

zenmapQuick scan plus프로필은 아까는 포트와 서비스에 관한 내용만 찾아냈다면 시간은 2배정도 더 걸리지만 그 서비스의 직접적인 VERSION을 찾아내고 어떤 OS를 사용중인지 등을 찾아낼 수 있다

강의에서는 이것이 얼마나 유용한지 설명해 주기 위해 본인의 Jail Break즉 탈옥한 아이폰으로 설명을 해주었다

image

위와 같은 결과를 얻어냈을 때 원래라면 아이폰은 SSH를 사용하지 않는다 하지만 탈옥한 아이폰일 경우 필수적으로 SSH를 사용하게 된다

게다가 가장 처음 탈옥을 하고 난 후에 SSH의 비밀번호는 alpine이라고 한다

보통은 탈옥을 하고서도 사람들이 변경을 하지 않아 스캔을 통한 정보만으로도 ssh에 접속할 수 있는 상황이 생기는 것이다

사실 다른 wargame을 하면서도 nmap을 그저 포트 스캐닝을 통해 열린 포트와 사용하고 있는 서비스의 버전을 알아내어 취약점 공격을 할 때에 사용하곤 했는데 이런 식으로 정보를 이용할 수 있다고는 생각을 못했다

11. 네트워크 해킹 - 연결 후 공격 - 중간자(MITM) 공격

와 이번 시리즈는 19개나 된다

더 많이 배울 수 있다는 생각에 의욕이 더 느는 느낌?

MITM

Man In The Middle

중간에 있는 사람이라는 의미로

Frame

위와 같이 피해자와 AP가 통신하는 것을 중간에 가로채는 것을 의미한다

11-1. ARP 포이즈닝이란?

MITM 공격을 하기 위해서는 우리가 두 기기 사이의 통신을 가로챌 수 있을 때에 실행할 수 있는 공격이 된다

그리고 그 방법 중 하나가 바로 ARP 스푸핑(포이즈닝)이다

ARP란?

Address Resolution Protocol

CCNA 공부에도 언급된 적이 있다

처음 컴퓨터 끼리 통신을 하기 위해서는 먼저 MAC 주소를 얻기 위한 ARP를 한다

이 때 ARP는 브로드 캐스트 방식으로 모든 컴퓨터에게 “이 아이피 쓰고 있는 컴퓨터 누구야?” 하고 물어보게 된다

그 아이피를 사용하는 컴퓨터 외의 다른 컴퓨터들은 랜카드에서 바로 정보를 버리고 아이피를 가진 랜카드에서는 “그거 나야” 하고 MAC주소를 ARP에게 다시 돌려준다

image

윈도우에서나 리눅스에서 동일한 명령어인 arp -a맥 테이블을 볼 수 있다

APR 스푸핑ARP의 특성을 이용한 것이다

ARP의 문제점

  1. 클라이언트는 들어오는 모든 정보를 받는다

  2. 클라이언트는 어떠한 확인절차도 없이 정보를 받아들인다

AP가 “이 아이피 누구야?” 하고 묻기도 전에 Hacker가 “내가 그 아이피야!” 라고 대답을 해버리는 것이다

Frame 1

그리고 그 정보를 토대로 맥 테이블을 업데이트 해버린다

그러면 이제 hackerAP에서 오는 정보를 Victim에게 넘겨주며 그 정보를 읽을 수 있고 또한 Victim에서 AP로 가는 정보를 넘겨주며 또한 정보를 읽거나 입맛대로 조정할 수 있게 된다

11-2. 네트워크 트래픽 가로채기

Learn Python & Ethical Hacking From Scratch1에서 ARP 스푸핑 툴을 직접 만들어 보기도 했다고 한다

나중에 한번 추가적으로 들어볼지도?

이번 강의에서는 툴을 만들지는 않고 Bettercap이라는 툴을 사용할 것이다 (11-3 부터)

이 툴을 이용해서 데이터의 흐름을 변경하거나 데이터가 공격자의 컴퓨터를 통해서만 흐르도록 조정할 수도 있다

그 후 wireshark와 같은 툴을 통해 데이터를 분석하는 작업을 한다

사용법은 매우 간단하다

1
arpspoof -i [네트워크 장치] -t [클라이언트 IP] [게이트웨이 IP]

Screenshot from 2024-09-18 08-29-40

image

현재 내 가상 윈도우의 IP는 192.168.12.130 게이트웨이는 192.168.12.2 칼리 머신의 IP는 192.168.12.129으로 설정되어있다

Screenshot from 2024-09-18 08-35-11

1
root@kali:~# arpspoof -i eth0 -t 192.168.12.130 192.168.12.2

으로 게이트웨이에게 내가 윈도우 가상머신이라고 알려주고

1
root@kali:~# arpspoof -i eth0 -t 192.168.12.2 192.168.12.130

동시에 윈도우 가상머신에게는 내가 게이트웨이라고 알려주게 된다

처음에는 피해자(윈도우)를 속이는 것이고 두번째에는 라우터(게이트웨이)를 속이는 것이다

Screenshot from 2024-09-18 08-39-15

이제 실행하게 되면 피해자(윈도우)에서의 맥 테이블이 바뀐 것을 볼 수 있다

image

처음 두 줄을 보게 되면 분명 공격자 .2와 라우터 .129의 맥 주소가 달랐지만 arp공격을 한 후에는 라우터의 맥 주소가 공격자와 같아진 것을 알 수 있다

만약 이 상태에서 윈도우가 인터넷에 접속하려고 한다면 공격자(칼리)는 라우터가 아니기 때문에 요청을 받게되면 흐름을 막게되고 라우터로 요청을 흘려보내게 된다

이를 해결하기 위해 칼리에서 포트포워딩을 통해 마치 라우터처럼 패킷이 통과할 수 있도록 설정해줘야 한다

1
root@kali:~# echo 1 > /proc/sys/net/ipv4/ip_forward

명령어를 통해 포트포워딩을 허락해 줄 수 있다

Screenshot from 2024-09-18 08-47-05

11-3. Bettercap 기본 지식

네트워크 공격을 수행하기 위한 프레임워크

  • arp spoof 공격을 통해 패킷의 흐름을 변경할 수 있음
  • 데이터 스니핑 가능
  • HTTPS 우회
  • 도메인 리다이렉트(DNS spoofing)
  • 코드 삽입 밑 페이지 로드
  • 등등
1
bettercap -iface [interface]

Screenshot from 2024-09-18 22-36-16

위와 같이 bettercap에 접속할 수 있다

Screenshot from 2024-09-18 22-37-51

help 명령어로 후리가 사용할 수 있는 명령어와 모듈을 볼 수 있다

현재로써는 events.strem모듈만 활성화가 되어있는데 이 모듈은 다른 모든 이벤트를 처리하기 위해 백그라운드에서 실행되고 있는 모듈이다

특정 모듈에 관한 설명을 보고 싶다면 help 모듈이름으로 찾아볼 수 있다

이번 강의에서는 net.probenet.recon을 사용할 것인데 사용법을 모르기에 help net.probe을 해보자

Screenshot from 2024-09-18 22-41-57

  • net.probe (작동 중지): 계속해서 UDP 패킷을 보내 동일한 네트워크에 있는 기기를 확인
  • net.probe on : 모듈 켜기
  • net.probe off : 모듈 끄기

파라미터

파라미터설명기본값
net.probe.mdnsmDNS(Multi-cast Domain Name Service) 켜기/끄기true
net.probe.nbnsNetBIOS(Network BIOS) 이름 검색 서비스 찾기 켜기/끄기true
net.probe.throttle0보다 큰 경우 프로브 패킷은 이 값에 의해 밀리초 단위로 조절10
net.probe.upnpUPNP(Universal Plug and Play)찾기 켜기/끄기true
net.probe.wsdWSD(Web Services for Devices)찾기 켜기/끄기true

mDNS?

Multi-cast Domain Name Service

UDP 멀티캐스트 기반으로 LAN상에 있는 어떤 호스트 또는 Host의 IP를 찾기 위해 만들어진 프로토콜이다

예를들어 LAN상에 있는 프린터를 검색해서 사용할 수 있는 것

NetBIOS?

Network BIOS

NetBIOS

쉽게 말해 로컬 네트워크에서 컴퓨터 이름을 알기 위해 사용된다는 의미인건가?

IP주소 대신에 컴퓨터 이름(NetBIOS 이름)을 통해 통신을 하게 될 때 사용된다

UPnP?

Universal Plug and Play

UPnP란 무엇이고, 왜 당장 비활성화해야 하나요?

별도의 포트포워딩 설정 없이 프로그램을 사용할 수 있도록 자동으로 포트를 구성하는 기능

UPnP를 사용하게 되면 WAN에서 LAN을 검색할 수 있게 되어 취약해진다고 한다

WSD?

Web Services for Devices

WSD; Web Services for Devices Printer Port

Web_Services_for_Devices

Web Services for Devices (WSD)-xerox

기기를 자동으로 검색하여 설정 및 제어를 하는 프로토콜

Microsoft에서 제공하는 기술로, 네트워크로 연결된 장치를 검색하고 사용하기 위한 표준 방법

이라는 검색 결과가 자주 보인다

주로 프린터기에 자주 사용되는 기능인듯 하다

Screenshot from 2024-09-18 23-08-17

이제 net.probe 모듈을 실행시켜보면 위와 같은 결과가 나온다

켜는 순간 네트워크에 연결되어있는 클라이언트들을 자동으로 탐색하기 시작한다

Screenshot from 2024-09-18 23-12-57

윈도우 가상 머신을 켜고 확인해보면 192.168.130인 윈도우 가상머신과 192.168.12.1, 192.168.12.254의 게이트웨이가 잡히는 것을 볼 수 있다

또한 맨 윗줄을 보면 net.probe starting net.recon as a requirement for net.probe이라고 하는데 net.probe을 켜기 위해서는 net.recon을 켜게 된다

Screenshot from 2024-09-18 23-16-41

다시 help명령어로 확인해보면 net.probenet.recon이 켜져있는 것을 볼 수 있다

이는 net.probe이 모든 가능한 IP에 탐색 요청을 전송하고 다시 답장이 오게 되면 net.recon이 ARP 캐시를 모니터링해서 응답을 탐지해야하기 때문이다

그리고 탐지된 모든 IP를 리스트로 만들어서 공격을 수행할 수 있게 해준다

Screenshot from 2024-09-18 23-20-13

이제 net.show를 통해 연결된 클라이언트를 모두 볼 수 있다 (위에서 만들어진 리스트)

Workgroup?

[Active Directory] WORKGROUP VS Domain

컴퓨터 네트워킹에서 작업 그룹은 공통 리소스와 책임을 공유하는 LAN에 연결된 컴퓨터 모음

11-4. Bettercap을 이용한 ARP 스푸핑

MITM 공격을 하기에 앞서 우리는 arp.spoof라는 모듈을 사용할 것이다

Screenshot from 2024-09-18 23-26-58

  • arp.spoof (작동 중지): 선택한 네트워크를 spoofing한다
  • arp.spoof on : ARP spoofer 시작
  • arp.ban on : ARP spoofer를 ban모드로 실행 (타겟과의 연결 종료)
  • arp.spoof off : ARP spoofer 종료
  • arp.ban off : ARP ban모드 종료
파라미터설명기본값
arp.spoof.fullduplextrue면 타겟과 게이트웨이가 모두 공격당하고, 그렇지 않으면 타겟만 공격됩니다(라우터에 ARP 스푸핑 방지 기능이 있는 경우 공격이 실패)false
arp.spoof.internaltrue면 네트워크 컴퓨터 간의 로컬 연결이 스푸핑되고, 그렇지 않으면 외부 네트워크와 주고받은 연결만 스푸핑된다false
arp.spoof.skip_restoretrue로 설정하면 스푸핑이 중지된 경우 대상 arp 캐시가 복원되지 않는다false
arp.spoof.targets쉼표로 IP주소들을 나열할 수 있고 MAC주소나 스푸핑할 주소 또는 nmap스타일의 IP주소 나열법을 쓸 수도 있다default=
arp.spoof.whitelist위와 동일하나 이번에는 스푸핑을 생략할 IP등의 리스트이다NULL

파라미터 설정을 위해서는 set 파라미터 바꿀값으로 변경할 수 있다

Screenshot from 2024-09-18 23-38-23

여기서는 fullduplex값을 true로 변경하여 타겟과 라우터 모두를 속이도록 설정하였다

Screenshot from 2024-09-18 23-40-12

또한 타겟을 가상 윈도우 IP로 설정하였다

오류가 안뜬다면 성공

모듈을 실행시키기 위해서는 arp.spoof on을 사용할 수 있다

Screenshot from 2024-09-18 23-41-59

실행 후 window로 가서 확인해보자

image

게이트웨이의 MAC주소와 칼리 머신의 MAC주소가 동일한 것을 알 수 있다

원래 fullduplex의 값을 false로 냅둔다면 라우터에서는 타겟의 MAC주소는 변함없었을 것이다 하지만 우리가 true로 설정함으로써 타겟의 MAC 주소가 공격자의 주소로 변경되었을 것이다

11-5. 네트워크 기기 염탐하기(패스워드, 방문한 웹사이트 등을 확인하는 방법)

캡쳐한 데이터들을 보기 위해서 net.sniff모듈을 사용할 것이다

이번에는 모듈의 파라미터 설명은 넘어가겠다

Screenshot from 2024-09-18 23-52-17

Bettercap으로 https를 캡쳐하는 것은 의미가 없으니 vulweb.com에 접속하자

image

Screenshot from 2024-09-18 23-55-43

칼리 머신에서는 현재 중간자로 있기에 지나가는 모든 패킷을 확인할 수 있다

image

윈도우에서 한번 id test pwd test로 로그인해보자

Screenshot from 2024-09-18 23-57-58

조금만 올려보면 바로 우리가 입력한 아이디와 비밀번호를 볼 수 있다

This post is licensed under CC BY 4.0 by the author.