Metasploit의 alias plugin을 이용하여 resource script를 명령어로 만들기
오늘은 Metasploit의 alias 플러그인데 대한 이야기를 할까 합니다.
Alias plugin
미리 긴 명령행과 옵션을 하나의 명령어처럼 별칭으로 지정해두고 사용합니다. 대표적으로 bash에서 bashrc나 bash_profile에 alias로 명령행 정의해두고 사용하죠. 바로 이 기능이 Metasploit에도 플러그인으로 있습니다. alias 플러그인입니다.
먼저 alias 플러그인을 로드합니다.
HAHWUL> load alias
help를 보면.. 아주 단순한데(초기화 정도 옵션..) bash에서 쓰는 alias와 동일합니다. = 대신 metasploit 룰대로 공백으로 인자값 넘겨주면 인식합니다.
HAHWUL> help alias
Usage: alias [options] [name [value]]
OPTIONS:
-c <opt> Clear an alias (* to clear all).
-f <opt> Force an alias assignment.
-h Help banner.
여러가지 작업이나 타이핑하기 힘든 데이터를 alias로 정의해서 사용하면 편리합니다.
아래와 같이 단축어로 바꿀수도 있구요.
HAHWUL> alias s search
HAHWUL>
HAHWUL> s jenkins
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/gather/jenkins_cred_recovery normal Jenkins Domain Credential Recovery
auxiliary/scanner/http/jenkins_command normal Jenkins-CI Unauthenticated Script-Console Scanner
auxiliary/scanner/http/jenkins_enum
Make command!
그럼 몇가지 트릭을 써서 명령어를 만들어봅시다. 직접 msf코드를 수정하는 것보다 에러날 확률도 적고 업데이트로 망가지지도 않습니다.
우선 mad-metasploit에 rc 파일 하나 올려뒀는데, 코드 복붙이 귀찮으시면 github repo에서 받으셔도 됩니다.
예전에 hosts 명령 손볼떄 잠깐 썼던 코드인데, 오늘 예제로 사용하겠습니다. 기존 hosts 명령보다 좀 더 많은 정보를 주는 그런 스크립트에요.
ahosts.rc
<ruby>
rtype = Array.new(4)
rtype[0] = "'name,address,state,service_count,os_name,mac,os_sp,tags'"
rtype[1] = "'name,address,os_name,mac,tags,virtual_host'"
rtype[2] = "'name,address,service_count,vuln_count,cred_count,host_detail_count'"
rtype[3] = "'address,arch,comm,comments,created_at,cred_count,detected_arch,exploit_attempt_count,host_detail_count,info,mac,name,note_count,os_family,os_flavor,os_lang,os_name,os_sp,purpose,scope,service_count,state,updated_at,virtual_host,vuln_count,tags'"
puts " - [0] #{rtype[0]}"
puts " - [1] #{rtype[1]}"
puts " - [2] #{rtype[2]}"
puts " - [3] #{rtype[3]}"
print_status "Input type"
typ = gets.chomp
case typ
when "0"
self.run_single("hosts -c "+rtype[0])
when "1"
self.run_single("hosts -c "+rtype[1])
when "2"
self.run_single("hosts -c "+rtype[2])
when "3"
self.run_single("hosts -c "+rtype[3])
else
print_error "Wrong choice"
end
</ruby>
msfconsole에서 alias로 ahosts 라는 이름으로 resource script를 불러줍니다.
HAHWUL> alias ahosts 'resource ~path~/mad-metasploit/resource-script/ahosts.rc'
그럼 마치 명령어처럼 사용이 가능하죠.
Auto loading
예전에 init script 관련해서 포스팅한적이 있습니다. 자세한건 링크 보시는게 좋을 것 같습니다. 요약하자면, msfconsole을 실행할 떄 인자값으로 바로 실행할 resource script를 지정할 수 있는데 여기에 alias 플러그인을 로드하고 미리 지정해두면 자동으로 명령어가 로딩될겁니다.
setg Prompt "SHELL(Sessions: %S Jobs: %J)"
load alias
alias ahosts 'resource ~path~/mad-metasploit/resource-script/ahosts.rc'
clear
대충 세팅은 했고 실행해보면
./msfconsole -r custom.rc
쉽죠?
Reference
- https://www.hahwul.com/2017/09/metasploit-customize-column-and-tagging.html
- https://www.hahwul.com/2017/07/metasploit-make-custom-msfconsole-with.html