2012년 8월 14일 화요일

Metasploit unleashed - msfconsole 명령어 [2]


metasploit-unleashed 튜토리얼 중 msfconsole 명령어 부분을 정리한 글입니다.


back

만약 여러분이 특정 모듈 사용이 끝나면, 혹은 실수로 잘못된 모듈을 선택했다면, 여러분은 'back' 멸령어를 사용해 그 전 상황으로 돌아가실 수 있습니다. 하지만 모듈을 사용중인 상황에서 모듈을 바로 바꿀수 있기 때문에, 굳이 back 명령어를 사용하지 않으셔도 됩니다. 그리고 변수들은 전역으로 설정되어 있을때만 유지되고 그렇지 않은 경우엔 보존되지 않습니다.
msf auxiliary(ms09_001_write) > back
msf >


check

check명령어는 실제로 exploit하는 대신 타겟이 여러분이 사용하려고 하는 공격에 취약한지 그렇지 않은지를 확인해 줍니다. 
msf exploit(ms04_045_wins) > show options

Module options:

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   RHOST  192.168.1.114    yes       The target address
   RPORT  42               yes       The target port


Exploit target:

   Id  Name
   --  ----
   0   Windows 2000 English


msf exploit(ms04_045_wins) > check
[-] Check failed: The connection was refused by the remote host (192.168.1.114:42)

connect

이것은 SSL, 프록시, 피봇, 그리고 파일 전송을 지원하는 netcat의 작은 사본입니다. 'connect' 명령어와 IP 주소, 그리고 포트 넘버를 입력하시면, 여러분은 netcat과 telnet과 같이 다른 호스트 네트워크에 접속할 수 있습니다.
msf > connect 192.168.1.1 23
[*] Connected to 192.168.1.1:23
DD-WRT v24 std (c) 2008 NewMedia-NET GmbH
Release: 07/27/08 (SVN revision: 10011)
DD-WRT login:

사용가능한 다른 옵션은 -h 를 입력하시면 보실 수 있습니다.
msf > connect -h
Usage: connect [options]  

Communicate with a host, similar to interacting via netcat, taking advantage of
any configured session pivoting.

OPTIONS:

    -C        Try to use CRLF for EOL sequence.
    -P   Specify source port.
    -S   Specify source address.
    -c   Specify which Comm to use.
    -h        Help banner.
    -i   Send the contents of a file.
    -p   List of proxies to use.
    -s        Connect with SSL.
    -u        Switch to a UDP socket.
    -w   Specify connect timeout.
    -z        Just try to connect, then return.

msf > 


irb

'irb' 명령어를 실행하면 명령어를 사용할 수 있고, 메타스플로잇 스크립트를 만들 수 있는 루비 인터프리터 셀을 제공합니다. 이 기능은 프레임 워크의 내부를 이해하는데 매우 유용한 기능입니다.
msf > irb
[*] Starting IRB shell...

>> puts "Hello, metasploit!"
Hello, metasploit!
=> nil
>> Framework::Version
=> "4.2.0-dev"
>> framework.modules.keys.length
=> 1579
>>


jobs

Jobs는 백그라운드에서 실행되고 있는 모듈을 말합니다. 'jobs' 명령어를 입력하시면 백그라운드에서 실행되고 있는 Job을 종료할 수 있습니다.
msf > jobs -h
Usage: jobs [options]

Active job manipulation and interaction.

OPTIONS:

    -K        Terminate all running jobs.
    -h        Help banner.
    -i   Lists detailed information about a running job.
    -k   Terminate the specified job name.
    -l        List all running jobs.
    -v        Print more detailed info.  Use with -i and -l

msf > 


load

'load' 명령어는 메타스플로잇의 'plugin 디렉토리에서 플러그인을 로드합니다. 변수들은 다음의 'key=val'와 같은 형식으로 입력하시면 쉘에 넘겨줄 수 있습니다.
msf > load
Usage: load  [var=val var=val ...]

Loads a plugin from the supplied path.  If path is not absolute, fist looks
in the user's plugin directory (/root/.msf4/plugins) then
in the framework root plugin directory (/opt/framework/msf3/plugins).
The optional var=val options are custom parameters that can be passed to plugins.

msf > load pcap_log
[*] PcapLog plugin loaded.
[*] Successfully loaded plugin: pcap_log


loadpath

'loadpath' 명령어는 여러분의 페이로드, 제로 데이 스크립트, 인코더와 같은 외부 모듈을 로드해 메타스플로잇이 사용 할 수 있도록  합니다.
msf > loadpath /home/secret/modules

Loaded 0 modules.


unload

'loadpath'와는 반대로 'unload'는 로드한 플러그인과 확장 명령어들을 언로드 합니다.
msf > unload pcap_log
Unloading plugin pcap_log...unloaded.

resource

'resource' 명령어는 실행파일을 로드해 msfconsole에서 사용할 수 있도록 합니다.
msf > resource
Usage: resource path1 [path2 ...]

Run the commands stored in the supplied files.  Resource files may also contain
ruby code between  tags.

See also: makerc

msf >
Karmetasploit과 같은 공격은 karma.rc 와 같은 리소스 파일을 사용합니다.
msf > resource karma.rc
[*] Processing karma.rc for ERB directives.
resource (karma.rc)> db_connect msf3:PASSWORD@127.0.0.1:7175/msf3
resource (karma.rc)> use auxiliary/server/browser_autopwn
...snip...

실행 파일을 msfconsole에 로드하면 파일 실행과 개발시간을 단축시켜주며 자동으로 여러가지 명령어를 실행할 수 있도록 도와줍니다. msfconsole의 콘솔환경에서 실행파일을 로드 하는 방법 외에, msfconsole을 실행할 때 '-r' 옵션을 사용해 로드하는 방법도 있습니다.

root@bt:~# echo version > version.rc
root@bt:~# msfconsole -r version.rc


 _                                                      _
/  \  / \        __                          _   __    /_/ __
| |\ /  | _____  \ \            ___   _____ | | /   \  _   \ \
| | \/| | | ___\ |- -|   /\    / __\ | -__/ | | | |  || | |- -|
|_|   | | | _|__  | |_  / -\ __\ \   | |    | |_ \__/ | |  | |_
      |/  |____/  \___\/ /\  \___/   \/      \__|     |_\  \___\


       =[ metasploit v4.2.0-dev [core:4.2 api:1.0]
+ -- --=[ 775 exploits - 411 auxiliary - 120 post
+ -- --=[ 238 payloads - 27 encoders - 8 nops
       =[ svn r14414 updated 6 days ago (2011.12.14)

[*] Processing version.rc for ERB directives.
resource (version.rc)> version
Framework: 4.2.0-dev.14161
Console  : 4.2.0-dev.14065
msf > 


route

"route" command in Metasploit allows you to route sockets through a session or 'comm', providing basic pivoting capabilities. To add a route, you pass the target subnet and network mask followed by the session (comm) number.
meterpreter > route -h
Usage: route [-h] command [args]

Display or modify the routing table on the remote machine.

Supported commands:

   add    [subnet] [netmask] [gateway]
   delete [subnet] [netmask] [gateway]
   list

meterpreter >
meterpreter > route

Network routes
==============

    Subnet           Netmask          Gateway
    ------           -------          -------
    0.0.0.0          0.0.0.0          172.16.1.254
    127.0.0.0        255.0.0.0        127.0.0.1
    172.16.1.0       255.255.255.0    172.16.1.100
    172.16.1.100     255.255.255.255  127.0.0.1
    172.16.255.255   255.255.255.255  172.16.1.100
    224.0.0.0        240.0.0.0        172.16.1.100
    255.255.255.255  255.255.255.255  172.16.1.100


info

'info'명령어는 특정 모듈의 옵션과 타겟, 그리고 기타 정보를 제공합니다. 여러분이 의도하지 않은 결과를 초래하는것을 원하지 않는다면, 모듈 사용전에 그 모듈의 정보를 확인하는 습관을 가집시다.
'info' 명령어는 다음과 같은 정보도 제공합니다:
  • 작성자와 문서의 라이센스 정보
  • Vulnerability references (ie: CVE, BID, etc)
  • 모듈이 가지고 있는 페이로드 제한 정보
msf  exploit(ms08_067_netapi) > info auxiliary/dos/windows/smb/ms09_001_write 

       Name: Microsoft SRV.SYS WriteAndX Invalid DataOffset
     Module: auxiliary/dos/windows/smb/ms09_001_write
    Version: 10394
    License: Metasploit Framework License (BSD)
       Rank: Normal

Provided by:
  j.v.vallejo 

Basic options:
  Name   Current Setting  Required  Description
  ----   ---------------  --------  -----------
  RHOST                   yes       The target address
  RPORT  445              yes       Set the SMB service port

Description:
  This module exploits a denial of service vulnerability in the 
  SRV.SYS driver of the Windows operating system. This module has been 
  tested successfully against Windows Vista.

References:
  http://www.microsoft.com/technet/security/bulletin/MS09-001.mspx
  http://www.osvdb.org/48153
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2008-4114
  http://www.securityfocus.com/bid/31179


set

'set' 명령어는 현재 사용중인 모듈에서 이용하는 프레임 워크 옵션과 파라미터를 수정할 때 사용합니다.
msf auxiliary(ms09_001_write) > set RHOST 192.168.1.1
RHOST => 192.168.1.1
msf auxiliary(ms09_001_write) > show options

Module options:

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   RHOST  192.168.1.1      yes       The target address
   RPORT  445              yes       Set the SMB service port

메타스플로잇은 또한 여러분에게 인코더를 제공합니다. 여러분이 어떤 페이로드 인코딩 방식을 사용해야 할지 확실하지 않을때 이 인코더는 여러분에게 유용한 도움을 줄 것입니다.

msf  exploit(ms08_067_netapi) > show encoders

Compatible Encoders
===================

   Name                    Disclosure Date  Rank       Description
   ----                    ---------------  ----       -----------
   cmd/generic_sh                           good       Generic Shell Variable Substitution Command Encoder
   cmd/ifs                                  low        Generic ${IFS} Substitution Command Encoder
   cmd/printf_php_mq                        manual     printf(1) via PHP magic_quotes Utility Command Encoder
   generic/none                             normal     The "none" Encoder
   mipsbe/longxor                           normal     XOR Encoder
   mipsle/longxor                           normal     XOR Encoder
   php/base64                               great      PHP Base64 encoder
   ppc/longxor                              normal     PPC LongXOR Encoder
   ppc/longxor_tag                          normal     PPC LongXOR Encoder
   sparc/longxor_tag                        normal     SPARC DWORD XOR Encoder
   x64/xor                                  normal     XOR Encoder
   x86/alpha_mixed                          low        Alpha2 Alphanumeric Mixedcase Encoder
   x86/alpha_upper                          low        Alpha2 Alphanumeric Uppercase Encoder
   x86/avoid_utf8_tolower                   manual     Avoid UTF8/tolower
   x86/call4_dword_xor                      normal     Call+4 Dword XOR Encoder
   x86/context_cpuid                        manual     CPUID-based Context Keyed Payload Encoder
   x86/context_stat                         manual     stat(2)-based Context Keyed Payload Encoder
   x86/context_time                         manual     time(2)-based Context Keyed Payload Encoder
   x86/countdown                            normal     Single-byte XOR Countdown Encoder
   x86/fnstenv_mov                          normal     Variable-length Fnstenv/mov Dword XOR Encoder
   x86/jmp_call_additive                    normal     Jump/Call XOR Additive Feedback Encoder
   x86/nonalpha                             low        Non-Alpha Encoder
   x86/nonupper                             low        Non-Upper Encoder
   x86/shikata_ga_nai                       excellent  Polymorphic XOR Additive Feedback Encoder
   x86/single_static_bit                    manual     Single Static Bit
   x86/unicode_mixed                        manual     Alpha2 Alphanumeric Unicode Mixedcase Encoder
   x86/unicode_upper                        manual     Alpha2 Alphanumeric Unicode Uppercase Encoder


unset


'unset' 명령어는 'set'명령어와 반대의 기능을 제공합니다. 'set'을 통해 수정했던 파라미터를 'unset'을 통해 제거하며, 'unset all' 명령어를 통해 수정된 모든 파라미터를 원래대로 바꿀 수 있습니다.

msf > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf > set THREADS 50
THREADS => 50
msf > set

Global
======

  Name     Value
  ----     -----
  RHOSTS   192.168.1.0/24
  THREADS  50

msf > unset THREADS
Unsetting THREADS...
msf > unset all
Flushing datastore...
msf > set

Global
======

No entries in data store.

msf > 


sessions

'sessions' 명령어는 스폰된 세션을 나열하고, 사용하고, 정지시킬 때 사용합니다. 이런 세션은 쉘, Meterpreter 세션, VNC 등이 될 수 있습니다.
msf > sessions -h
Usage: sessions [options]

Active session manipulation and interaction.

OPTIONS:

    -K        Terminate all sessions
    -c   Run a command on the session given with -i, or all
    -d   Detach an interactive session
    -h        Help banner
    -i   Interact with the supplied session ID
    -k   Terminate session
    -l        List all active sessions
    -q        Quiet mode
    -r        Reset the ring buffer for the session given with -i, or all
    -s   Run a script on the session given with -i, or all
    -u   Upgrade a win32 shell to a meterpreter session
    -v        List verbose fields
실행중인 세션을 활성화 하기 위해선 'sessions -l' 명령어를 입력합니다.
msf exploit(3proxy) > sessions -l

Active sessions
===============

  Id  Description    Tunnel
  --  -----------    ------
  1   Command shell  192.168.1.101:33191 -> 192.168.1.104:4444

주어진 세셜을 사용하기 위해선, 'session -i' 뒤에 사용하고자 하는 세션 아이디 넘버를 입력합니다.

msf exploit(3proxy) > sessions -i 1
[*] Starting interaction with 1...

C:\WINDOWS\system32>



참고 : http://www.offensive-security.com/metasploit-unleashed/Msfconsole

댓글 없음:

댓글 쓰기