Back

[METASPLOIT] Customize column and tagging at "rhosts" command on metasploit

metasploit에서 hosts 명령은 아주 중요한 명령입니다. 타겟에 대한 관리부터, exploit 시 좀 더 편하게 타겟을 RHOSTS에 넣을 수 있어 많이들 사용하시고, 앞으로도 쭉 사용할 수 밖에 없는 기능이죠.

오늘은 hosts 명령에서 열(column) 값을 custom 하고 tag 옵션을 이용해서 조금 더 효율적으로 관리하는 방법에 대해 이야기할까 합니다.

HAHWUL > hosts -h

1. custom column

보편적으로 -c 옵션은 hosts에서 원하는 column만 볼 수 있게 해주는 옵션입니다. 기본 hosts 명령을 날리면

HAHWUL > hosts

Hosts

address mac name os_name os_flavor os_sp purpose info comments


192.168.56.88 Lee Lee 192.168.56.139 Kim Linux 3.10.40-4192068 server Kim 192.168.56.101 08:00:27:69:14:ff HAHWUL Windows 7 SP1 client

위와 같이 address, mac, name, os_name, os_flavor, os_sp, purpose, info, comments의 값들이 나타납니다. 그러나 실제로 hosts 가 지원하는 column의 갯수는 더 많습니다.

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

원하는 column의 데이트를 보기 위해선 -c 옵션을 통해 원하는 값들을 넘겨주어야 합니다.

HAHWUL > hosts -c ‘name,address,state,service_count,os_name,mac,os_sp’

Hosts

name address state service_count os_name mac os_sp


HAHWUL 192.168.56.101 alive 9 Windows 7 08:00:27:69:14:ff SP1 Kim 192.168.56.139 alive 0 Linux 3.10.40-4192068 Lee 192.168.56.88 alive 0

원하는 정보만 추려서 보기 굉장히 좋습니다. 그러나.. 매번 입력마다 -c 옵션으로 값을 넘겨주기는 매우 번거롭습니다.

자주쓰는거끼리 모아서 rc 파일로 만들어놓으면 좋습니다.

ahosts.rc hosts -c ‘name,address,state,service_count,os_name,mac,os_sp’

그래서 간단하게 하나 짜보면..

<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,services_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>

입맛에 맞게 바꿔써 쓰시면 좋을 것 같네요~

추가로 column들은 -O 옵션으로 정렬해서 보거나 -S 옵션으로 검색 시 유용합니다.

2. tagging

hosts 명령에서 info, name, comment는 평소에도 많이 이용하던 것들인데, 오늘 tag에 대해 사용해보니 매력적인 친구라고 느꼈습니다. (미리 알았더라면.. 무지함)

SNS에서 hash tag들 많이 사용하시죠? tag는 각 객체가 어떠한 속성들, 값들 , 뭐 여러가지 것들을 지녔는지 표기해주기 아주 좋습니다. metasploit에서 지원하는 tag의 기능도 비슷한 역할을 수행합니다.

hosts 명령의 -t 옵션으로 태그 지정이 가능합니다. 아래 간단하게 2개의 host에 대해 각각 tag를 지정합니다.

HAHWUL > hosts 192.168.56.88 -t “Admin_access_user” HAHWUL > hosts 192.168.56.139 -t “DB_access_user”

나중에 권한별로 정리하기에 매우 유용하겠지요. 여기서 아까 위에서 이야기한 column을 건드려 tag 내용을 볼 수 있습니다. comment와 비슷하지만 약간 차이를 가집니다.

HAHWUL > hosts -c ‘address,name,os_name,info,comments,tags’

Hosts

address name os_name info comments tags


192.168.56.88 Lee Lee Admin_access_user 192.168.56.139 Kim Linux Kim DB_access_user 192.168.56.101 HAHWUL Windows 7

tag는 여러개 지정이 가능합니다. 아래와 같이 DB_access_user tag를 가진 host에 Admin_access_user tag를 붙여주면..

HAHWUL > hosts 192.168.56.139 -t “Admin_access_user” HAHWUL > hosts -c ‘address,name,os_name,info,comments,tags’

Hosts

address name os_name info comments tags


192.168.56.88 Lee Lee Admin_access_user 192.168.56.139 Kim Linux Kim Admin_access_user, DB_access_user 192.168.56.101 HAHWUL Windows 7

Kim은 2개의 태그를 지니게 됩니다. 이 태그들로 검색 시 원하는 자료만 쏙 빼서 볼 수 있죠.

HAHWUL > hosts -S Admin_access_user

Hosts

address mac name os_name os_flavor os_sp purpose info comments


192.168.56.88 Lee Lee 192.168.56.139 Kim Linux 3.10.40-4192068 server Kim

hosts의 -R옵션으로 로 데이터를 한번에 집어넣때 동일하게 -t 옵션 사용이 가능합니다. 물론 이건 다른 -R 옵션에서도 많이 쓰는 방법이니 바로 손에 익을 것 같네요.

hosts -R “192.168.56.100-192.168.56.121” -t Admin_access_user

태그를 지울땐 host를 지울때와 동일하게 -d 옵션을 주되, -t 를 같이 주어 삭제가 가능합니다.

HAHWUL > hosts -c ‘name,address,state,service_count,os_name,mac,os_sp,tags’

Hosts

name address state service_count os_name mac os_sp tags


HAHWUL 192.168.56.101 alive 9 Windows 7 08:00:27:69:14:ff SP1
Kim 192.168.56.139 alive 0 Linux 3.10.40-4192068 Admin_access_user, DB_access_user Lee 192.168.56.88 alive 0 Admin_access_user

HAHWUL > HAHWUL > HAHWUL > hosts -d -t ‘Admin_access_user’ 192.168.56.139 HAHWUL > hosts -c ‘name,address,state,service_count,os_name,mac,os_sp,tags’

Hosts

name address state service_count os_name mac os_sp tags


HAHWUL 192.168.56.101 alive 9 Windows 7 08:00:27:69:14:ff SP1
Kim 192.168.56.139 alive 0 Linux 3.10.40-4192068 DB_access_user Lee 192.168.56.88 alive 0 Admin_access_user

Licensed under CC BY-NC-SA 4.0
Last updated on Jul 10, 2021 01:05 +0900