기본 콘텐츠로 건너뛰기

Metasploit 기초

Metasploit은 콘솔, 커맨드라인, 그래픽을 지원하는 다수의 인터페이스를 제공한다.
함께 제공되는 유틸리티는 Metasploit 프레임워크의 내장 기능에 직접 접근할 수 있다.

1-1 MSFconsole


가장 많이 사용되고 거의 모든 기능을 쓸 수 있다.
Figure 1 Kali Linux 위치
Figure 2 MSFconsole 실행 화면

1-2 MSFcli


MSFconsole은 매우 다른 프레임워크 접근 방식을 사용한다.
  1. MSFcli는 다른 콘솔 도구와 같이 스크립트 수행과 명령 해석 기능에 중점을 둠.
  2. 프레임워크의 고유한 인터프리터를 사용하지 않고 커맨드라인에서 직접 수행된다.
  3. exploit과 보조 모듈을 실행시킬 수 있으므로 새로운 exploit을 개발하거나 모듈을 테스트할 때 유용하다.
위치는 MSFconsole과 같은 위치에 위치하고 있다. 다음은 MSFcli 실행화면이다.
Figure 3 MSFcli 실행 화면

1-3 MSFcli를 이용한 bind_tcp 공격


MSFcli를 이용하여 bind_tcp를 이용하여 공격을 수행한다. 다음의 실습 환경에서 공격을 수행했다.
  1. Kali Linux 1.10 ver (공격자)
  2. Window XP pro SP2 (공격 대상)
공격을 수행하는데 있어 XP의 방화벽이 꺼져있는 상태로 공격을 수행했다. 실제로 방화벽이 꺼진 상태의 취약한 시스템은 많이 있다고 책에서는 설명한다.
공격에 이용되는 모듈은 ms_08_067_netapi 모듈이다.
모듈을 사용하는 방법을 모른다면 O 옵션을 이용하여 모듈 사용법을 조회 할 수 있다.
Figure 4 ms_08_067_netapi 모듈의 사용법
이 모듈은 3가지 옵션으로 RHOST, RPORT, SMPIPE를 제공하며 P를 덧붙여 페이로드를 확인할 수 있다.
Figure 5 ms_08_067_netapi 페이로드 설명
사진에 나타나있는 페이로드 보다 더 많은 페이로드가 제공되니 직접 확인 바란다.
exploit에서 요구하는 옵션과 페이로드의 선택을 하고 난 뒤 E 옵션으로 공격을 수행한다.
Figure 6 ms_08_067_netapi 모듈을 이용한 공격 수행
공격 대상인 XP의 명령 프롬프트를 전달 받았으므로 공격은 성공했다.

1-4 Armitage


라파엘 머지에 의해 만들어진 완전한 대화형 GUI인 Armitage는 풍부한 기능을 무료로 사용 가능하다는 점이 매우 인상적이다.
실행 하기 전 PostgreSQL의 서비스를 시작해야 한다.
Figure 7 PostgreSQL 시작 명령
시작한 후 Armitage 를 시작하면 다음 과 같은 화면에서 connect 를 눌러 실행한다.
Figure 8 Armitage 연결 화면
Figure 9 Armitage 실행 화면

2. Metasploit 유틸리티


Metasploit 유틸리티는 특정 상황에서 유용하게 사용될 수 있게 프레임워크의 특별한 기능과 직접 연결된 인터페이스다.

2-1 MSFpayload


Metasploit의 구성 요소인 MSFpayload는 Shell Code를 생성하고 실행하며, 프레임워크의 외부 공격을 훨씬 유용하게 만들어준다.
유틸리티의 위치는 Kali Linux 기준 /usr/share/framwork2/msfpayload 에 위치해 있다.
지원하는 옵션 등 사용법은 다음과 같다.
Figure 10 msfpayload의 사용법
MSFcli와 마찬가지로 페이로드 모듈에서 원하는 옵션으로 필수 변수나 선택적인 변수와 함께 S옵션을 이용하여 사용법을 참조한다.
Figure 11 win32_reverse 모듈의 사용법

2-2 MSFencode


MSFpayload가 생성한 shell code는 기능은 완전하지만, 문자열 끝에 밑의 사진과 같은 여러 널문자가 포함되어 있다.
Figure 12 MSFpayload의 Shell Code
이러한 Shell Code에서의 널 문자는 결국 페이로드를 못 쓰게 만들어버린다.
또한 Shell code를 평 문으로 네트워크로 보내면 침입 탐지시스템(IDS)과 Antivirus 소프트웨어에 의해 탐지될 수 있다.
이 문제를 해결하기 위해 Metasploit 개발자는 MSFencode를 이용하여 문자를 encoding 할 수 있도록 지원하며, 이를 통해 비정상적인 문자로 인한 페이로드의 영향을 없애고 Antivirus 와 IDS의 탐지를 회피할 수 있다.
MSFencode에서 지원하는 옵션은 다음과 같다.
Figure 13 MSFencode 사용법
MSFencode는 특별한 상황을 위해 다수의 서로 다른 인코더를 포함하고 있다. 사용 가능한 인코더는 –l 옵션으로 확인 가능하다. 페이로드는 신뢰성 순서로 순위가 결정 된다는 점을 기억해 두자.

2-3 Nasm Shell


Nasm_shell.rb 유틸리티는 어셈블리 코드를 이해하고자 할 때 유용하게 사용된다.
Kali Linux 기준으로 Nasm_shell.rb 유틸리티의 위치는 다음과 같다. Jmp esp 명령에 대한 연산 코드도 같이 요청해 보았다.
Figure 14 Nasm_shell.rb의 위치와 사용 예

3. Metasploit Express와 Pro


Metasploit express와 pro버전은 상용 버전으로 우리가 현재 쓰고 있는 Kali Linux 1.10 ver에서 제공되는 커뮤니티 버전과는 다른 기능들이 있다.
기본적인 차이점은 다음과 같다.
  1. 커뮤니티 버전에서 지원하지 않는 도구들의 제공
  2. Pro 버전에서만 제공되는 보고서 작성 기능
상용버전의 특장점은 다음과 같다.
  1. 전문적인 모의해킹 전문가를 위해 만들어짐.
  2. 반복적인 작업을 줄여 업무 속도를 향상시켜준다.
  3. 자동화로 시간을 절약해줌으로써 구입 가격을 정당화한다.

댓글

이 블로그의 인기 게시물

보안 공부 링크

SSLsplit - SSL/TLS기반의 네트워크 포렌식 및 침투테스트(중간자공격) 도구 http://www.roe.ch/SSLsplit 가상화 서버운영 및 구축을 위한 Xenserver가 오픈소스로 공개 http://www.xenserver.org/ Python과 Fabric를 사용한 SSH 봇넷 C&C 구축 예제 http://raidersec.blogspot.kr/2013/07/building-ssh-botnet-c-using-python-and.html 파워쉘을 이용한 비밀번호 정보 획득 http://www.obscuresecurity.blogspot.kr/2013/07/get-gpppassword.html niktoHelper - Nmap의 Grepable형식을 Nikito와 연동하기 위한 파이썬 스크립트 http://milo2012.wordpress.com/2013/07/07/niktohelper-bridge-between-nmap-grepable-output-and-nikto/ 루비를 통한 심도있는 XSS 방어 방법 http://homakov.blogspot.com.es/2013/07/xss-defense-in-depth-with-rackrails-demo.html IT관련 E-Book 모음 http://www.cyberhades.com/2013/07/04/unos-libritos-tecnicos-para-el-veranito JJEncode 스크립트 분석 http://www.kahusecurity.com/2013/jjencode-script-leads-to-drive-by/ 웹브라우저 호환성 검증 및 분석결과 제공 http://www.modern.ie/ko-kr/ http://browsershots.org/ html 색상 선택 도구 https://kuler.adobe.com/create/color-wheel/ Windows 메모리 보호 메커니즘 http://resources.infosecinstitute.com/window...

dns2proxy 해킹툴

dns2proxy Offensive DNS server This tools offer a different features for post-explotation once you change the DNS server to a Victim. <Referer to help (-h) to new params options> Feature 1 Traditional DNS Spoof adding to the response the original IP address. Using spoof.cfg file: hostname ip.ip.ip.ip root@kali:~/dns2proxy# echo " www.s21sec.com  1.1.1.1" > spoof.cfg // launch in another terminal dns2proxy.py root@kali:~/dns2proxy# nslookup  www.s21sec.com  127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name:  www.s21sec.com Address: 1.1.1.1 Name:  www.s21sec.com Address: 88.84.64.30 or you can use domains.cfg file to spoof all host of a same domain: root@kali:~/demoBH/dns2proxy# cat dominios.cfg .domain.com 192.168.1.1 root@kali:~/demoBH/dns2proxy# nslookup aaaa.domain.com 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: aaaa.domain.com Address: 192.168.1.1 Hostnames at nospoof.cfg will no be spoofed. Featu...

어셈블리어(Assembly) 기초

0x01.  어셈블리 언어란 ? &  배우는 목적 CPU  에는 해당 프로세서에 명령을 내리기 위해 고유의 명령어 세트가 마련되어 있는데 이  명령어 세트를 기계어라고 한다 .  이 기계어는 숫자들의 규칙조합임으로 프로그래밍에 상당 히 난해하다 .  그래서 이 기계 명령어를 좀더 이해하기 쉬운 기호 코드로 나타낸것 ( 기계어와  1:1 로 대응된 명령을 기술하는 언어 ) 이 어셈블리어이다 .  어셈블리 언어는 그 코드가 어떤  일을 할지를 추상적이 아닌 ,  직접적으로 보여준다 .  논리상의 오류나 ,  수행 속도 ,  수행 과정 에 대해 명확히 해준다는 점에서 직관적인 언어이다 .  어셈블리 언어를 사용하면 메모리에 대한 이해도도 높아진다 .  어셈블리를 익히고 ,  배우는데 있어서는 여러 가지 목적이 있을 수 있다 .  컴퓨터 시스템 & 구조를 좀 더 깊게 이해하고 ,  메모리상의 데이터나  I/O 기기를 직접 액 세스 하는등의 고급언어에서는 할 수 없는 조작을위해서이다 .  프로그램의 최적화 및 리버 스 엔지니어링을 위해서도 필요하다 . + 2 줄 요약  + -  어셈블리 언어는 기계어와  1:1  대응을 하는 언어이다 . -  어셈블리 언어를 배우면 시스템을 이해하는데 도움이 된다 . 0x02.  어셈블리를 위한 기본 지식 (1)  기본적인 하드웨어 1) CPU -  메모리에 있는 내용을 읽고 ,  쓰고 데이터를 메모리와 각 레지스터로 보낸다 . 프로그램의 명령을 해석하고 실행한다 . 하나의 프로세서는  12~14 개의 레지스터를 가 지고 있으며 , CPU 의 연산 ,  논리 장치는 숫자와 기호에 관한 연산자를...