[METASPLOIT] Hardware pentest using metasploit - Hardware-Bridge

최근 Rapid7사에서 재미있는 내용을 발표했었습니다. 바로 Metasploit Framework의 Hardware-Bridge 기능입니다. 이로써 Metasploit은 소프트웨어와 하드웨어 모두 공격이 가능한 프레임워크가 되었네요.

아래 구글그룹스 내용과 공식 포스팅을 보시면 관련 내용이 있습니다.

https://groups.google.com/forum/#!msg/open-garages/Oa2WQRf0s_4/RtoaaJcBCAAJ https://community.rapid7.com/community/transpo-security/blog/2017/02/02/exiting-the-matrix

What is Hardware-Bridge in Metasploit

자 그럼 Hardware-Bridge가 무엇인지 더 알아봐야겠죠? 이 친구는 하드웨어 해킹을 돕기 위한 도구입니다. 네트워크에 연결된 디바이스는 공격하기 수월하지만 단절된 망의 디바이스는 공격하기 어렵습니다. 무언가 물리적인 접근이 필요하죠. 또한 흐르는 트래픽도 그에 맞는 프로토콜을 타는지라 프레임워크를 통한 분석은 어려웠습니다. (직접 한땀한땀…)

Hardware-Bridge는 자동차나 임베디드 기기 등에서 사용되는 Controller Area Network(CAN)에 대한 테스트를 지원합니다. 공격자 관점에서 툴을 통해 접근할 수 있는 부분이 늘어났고, 보안적인 관점에서도 심도있게 봐야할 부분이 늘어난거죠. 실제 업데이트된 MSF를 통해 하나하나 보겠습니다.

Hardware-Bridge는 크게 아래와 같이 Server와 Client로 구성되어 있습니다.

auxiliary/server/local_hwbridge normal > Hardware Bridge Server auxiliary/client/hwbridge/connect > Hardware Bridge Client

Server는 하드웨어와 Metasploit 사용자를 이어주는 다리이고, 사용자는 Client 를 통해서 Server에 접근 후 세션을 얻어 작업을 진행하게 됩니다. 이 세션에서 작업하는 명령이나 코드들은 서버에서 처리하여 연결된 디바이스로 직접 전송됩니다. 역할이 분명해졌네요.

Client: 사용자가 사용하는 Console Server: 하드웨어와 연결된 서버

예를들면 네트워크 사용이 가능한 라즈베리파이 같은 디바이스에서 msf의 local_hwbridge를 동작시키고 공격자는 Laptop을 통해 원격으로 접근하여 작업이 가능한거죠.

How to using?

각 module의 역할은 알았으니 사용해봐야겠지요? 먼저 Server 부분부터 볼까합니다. search 명령으로 hardware 라고 찾아보시면 쭉 나올겁니다.

서버 모듈을 사용합니다.

HAHWUL auxiliary(local_hwbridge) > use auxiliary/server/local_hwbridge normal HAHWUL auxiliary(local_hwbridge) > show options

옵션을 보게되면.. srvhost, port 랑 URIPATH 가 있습니다. URIPATH는 누구나 쉽게 접속하는 걸 막기위한 장치이죠. 설정하고 실행하면 .. 제가 지정한 4400 포트로 서버가 동작하게 됩니다.

HAHWUL auxiliary(local_hwbridge) > set SRVPORT 4400 SRVPORT => 4400 HAHWUL auxiliary(local_hwbridge) > run [] Auxiliary module execution completed [] Using URL: http://0.0.0.0:4400/4C8gORoXE [] Local IP: http://192.168.0.107:4400/4C8gORoXE [] Server started.

자! 이제 Client 로 Server console 에 접근할 순서입니다. Client 모듈을 읽어준 후 간단히 옵션을 보겠습니다.

HAHWUL auxiliary(local_hwbridge) > use auxiliary/client/hwbridge/connect HAHWUL auxiliary(connect) > show options

음.. 일반적인 모듈가 크게 차이가 없네요. 주의하실건 TARGETURI 설정을 해줘야 한다는 것과 필요 시 JSON Type 으로 debug 정보를 얻고싶다면 DEBUGJSON을 켜주시면 된다는거.. 정도가 있겠네요.

또.. 열심히 세팅해줍니다. 아까 서버 정보 입력이 끝나고 run을 해주시면..

HAHWUL auxiliary(connect) > set RHOST 192.168.0.107 RHOST => 192.168.0.107 HAHWUL auxiliary(connect) > set RPORT 4400 RPORT => 4400 HAHWUL auxiliary(connect) > set TARGETURI 4C8gORoXE TARGETURI => 4C8gORoXE HAHWUL auxiliary(connect) > run

[] Attempting to connect to 192.168.0.107… [] Sending status… [] Hardware bridge interface session 1 opened (127.0.0.1 -> 127.0.0.1) at 2017-02-09 23:11:14 +0900 [+] HWBridge session established [] Sending custom methods [] HW Specialty: {} Capabilities: {“custom_methods”=>true} [!] NOTICE: You are about to leave the matrix. All actions performed on this hardware bridge [!] could have real world consequences. Use this module in a controlled testing [!] environment and with equipment you are authorized to perform testing on. [] Auxiliary module execution completed

Bardware Bridge interface로 연결되며 session 하나가 생깁니다.

HAHWUL auxiliary(connect) > sessions -l

Active sessions

Id Type Information Connection – —- ———– ———- 1 hwbridge cmd/hardware 127.0.0.1 -> 127.0.0.1 (192.168.0.107)

접근해보시면..

HAHWUL auxiliary(connect) > sessions -i 1 [*] Starting interaction with 1…

hwbridge >

hwbridge 쉘로 넘어가졌네요. 특별한 모듈이라는 느낌보단 Meterpreter shell 쓴다고 생각하시면 이해에 좋습니다. help를 보면..

hwbridge > help

Core Commands

Command              Description
-------              -----------
?                    Help menu
bgkill               Kills a background meterpreter script
bglist               Lists running background scripts 
bgrun                Executes a meterpreter script as a background thread
exit                 Terminate the hardware bridge session
help                 Help menu
info                 Displays information about a Post module
irb                  Drop into irb scripting mode
load                 Load one or more meterpreter extensions # meterpreter extensions을 불러옵니다. (특이하네요)
load_custom_methods  Loads custom HW commands if any # Hardware 명령을 미리 만들어두고 불러옵니다. (아래 Custom Methods Command 참조)
run                  Executes a meterpreter script or Post module # Post module 을 실행하거나 Meterpreter script 를 실행합니다.
specialty            Hardware devices specialty # 하드웨어 디바이스의 정보를 가져옵니다. 
status               Fetch bridge status information # bridge의 정보를 가져옵니다. 

Custom Methods Commands

Command       Description
-------       -----------
sample_cmd    Sample HW test command #이 명령으로 요청을 주면 string 단위로 값을 보낼 수 있죠.

여러가지 명령이 있습니다. 역시 필요한 부분만 Description 작성하였습니다.

Hardware POST Mudules

개인적으로 Metasploit의 매력적인 부분 중 하는 Post 모듈이라고 생각합니다. 원하는 코드를 Shell로 옮겨 실행한다니 얼마나 좋습니까 :) Hardware Bridge에도 사용 가능한 POST Module은 존재합니다. 일단 hwbridge를 현재 3개가 나와있습니다.

post/hardware/automotive/getvinfo normal Get the Vehicle Information Such as the VIN from the Target Module post/hardware/automotive/identifymodules normal Scan CAN Bus for Diagnostic Modules post/hardware/automotive/malibu_overheat normal Sample Module to Flood Temp Gauge on 2006 Malibu

(말리부가??!) 아직 초장기 단계라 모듈이 많이 없지만 점차점차 많아질거라고 생각되네요.

Reference

https://groups.google.com/forum/#!msg/open-garages/Oa2WQRf0s_4/RtoaaJcBCAAJ https://community.rapid7.com/community/transpo-security/blog/2017/02/02/exiting-the-matrix http://opengarages.org/hwbridge/