이전에 여러가지 테스트 코드를 만들 때 아무 모듈이나 복사해서 구동부분만 다시짜는 식으로 사용했는데, 네트워크 관련 작업에는 샘플코드를 이용해서 작성하는것도 나쁘진 않겠네요.
일단 코드는 매우 간단합니다.
require 'msf/core'
class Metasploit3 < Msf::Auxiliary
include Msf::Exploit::Remote::Tcp
include Msf::Auxiliary::Scanner
def initialize
super(
'Name' => 'My custom TCP scan',
'Version' => '$Revision: 1 $',
'Description' => 'My quick scanner',
'Author' => 'Your name here',
'License' => MSF_LICENSE
)
register_options(
[
Opt::RPORT(12345)
], self.class)
end
def run_host(ip)
connect()
greeting = "HELLO SERVER"
sock.puts(greeting)
data = sock.recv(1024)
print_status("Received: #{data} from #{ip}")
disconnect()
end
end
initialize 함수에는 이름과, 버전, Desc 등 여러 정보를 넣습니다.
나중에 msf에서 검색해서 찾을 때 조금 더 편하게 찾을 수 있겠지요.
하나 눈여겨 볼 사항은 안에 register_options 부분입니다.
register_options(
[
Opt::RPORT(12345)
], self.class)
이부분에 Opt 로 명시하게 되면, msf에서 사용할 때 우리가 적용하는 Options 부분을 작성할 수 있습니다.
run_host 함수는 해당 스캐너가 동작하는 메인 부분입니다.
인자값으로 ip를 받고 Option 으로 등록된 포트에 대해 스캔하는 작업을 진행합니다.
def run_host(ip)
connect()
greeting = "HELLO SERVER"
sock.puts(greeting)
data = sock.recv(1024)
print_status("Received: #{data} from #{ip}")
disconnect()
end
connect() 함수를 통해 ip에 대해 연결 시도 후 sock.puts를 통해 데이터 전송(greeting 변수 내용) 후
recv하여 return 된 값을 확인합니다.
물론 connect 등의 함수는 위의 include 를 통해 scanner 모듈과 tcp 모듈 불러온 부분에서 정의된 내용이겠지요.
include Msf::Exploit::Remote::Tcp
include Msf::Auxiliary::Scanner
작성 후 모듈 디렉토리에 넣어주시면 바로 사용이 가능합니다. Metasploit Unleashed 에서는 scanner 경로로 넣어줬네요.
modules/auxiliary/scanner/ 에 simple_tcp.rb 이런식으로 넣어줍니다.
그리고 console 에서 검색 후 실행하면 다른 모듈처럼 쉽게 사용이 가능합니다.
use scanner/simple_tcp
msf auxiliary(simple_tcp) > hosts -R
RHOSTS => 127.0.0.1
msf auxiliary(simple_tcp) > run
[*] Received: hello metasploit from 127.0.0.1
[*] Auxiliary module execution completed
추가로 Report 부분은 Report 모듈을 include 하고 작성하면 됩니다.
include Msf::Auxiliary::Report
report_note(
:host => rhost,
:type => "myscanner_password",
:data => data
)
매번 느끼지만, 처음에 metasploit 에 대해 공부할땐 Metasploit Unleashed 가 좋은 것 같습니다.
기본적인 사용방법 공부 후 침투 대상이나 환경에 맞게 하나하나 코드 작성해서 사용하다 보시면 msf 가 굉장히 편리한 툴이란 것을 알 수 있을겁니다 : )
Reference
https://www.offensive-security.com/metasploit-unleashed/writing-scanner/
![]() |
HAHWULSecurity engineer, Gopher and H4cker! |
[offensive-security] of watching, saw a simple [Scan Moudle] code [Metasploit Unleashed].
ReplyDeleteOf course [msf] itself is composed of [ruby]. it is possible to easily manufacture better to use the [ruby]. However, if there is a sample code, it is more convenient to extended with other code.
ReplyDeleteI have a copy of any modules to create a variety of test code were using the only way to re-create the driving part.
ReplyDeleteThe network-related tasks'll be fine writing by using the "Sample Code".