[mud님 曰] 기다리던 USB Rubber Ducky가 도착했습니다. 이전부터 데프콘과 블랙햇 발표를 보고 사야지 사야지 생각만 하다가 몇 년. 그러다가 얼마 전 레드팀시큐리티의 물리적 침투테스트 기사를 읽고 본격적으로 필받아서 미루고 미루던 구매를 이제야 하게 되었습니다.
USB Rubber Ducky(편의상 덕희양으로 부르겠습니다)가 뭔지 모르신다면 2010년부터 판매된 자그마한 해킹 툴입니다. 생긴 건 USB 메모리같지만 실제로는 CPU가 장착된 아주 똑똑한 “컴퓨터”입니다. 게다가 마치 USB 키보드인 것처럼 컴퓨터를 속이는 재주도 있습니다. 그래서 기기에 꽂기만 하면 임의의 코드 실행이 가능합니다.
PC, 노트북, 태블릿, 스마트폰… 거의 모든 컴퓨터는 애초에 인간의 키보드 입력을 존중하도록 설계되어 있다는 점. 러버더키는 여기에 착안해 개발되었습니다. 윈도우, 맥, 리눅스, 안드로이드에서 가능. 전용 스크립트 언어를 사용합니다. 얼마 전에는 젠더로 아이패드 해킹하는 것도 봤네요.
내용물은 단촐함 그 자체입니다. 사용 설명서 카드와 개별적으로 비닐포장된 본체와 액세서리가 들어 있네요.
1번은 USB 드라이브 커버, 2번은 안드로이드용 어댑터입니다. 3번은USB 커버. CPU와 녹색등을 안보이게 해 줍니다. 4번은 128MB 마이크로SD 카드. 5번은 본체로 마이크로SD 카드를 끼웠다 뺄 수 있는 장치가 되어 있습니다. 6번은 마이크로SD 어댑터입니다.
본체입니다. 60 MHz 32 비트 CPU와 마이크로SD 카드 어댑터를 보실 수 있습니다. 이 두가지 덕분에 재미난 일들이 가능합니다.
마이크로SD카드 USB 리더기.
USB 커버입니다. 검은색 플라스틱은 구형 IBM 노트북 키보드같은 감촉입니다. 원하는 로고를 마음대로 붙이도록 상표나 무늬가 없습니다. 자료 이미지의 오리 스티커는 오리지널 판매처에서 별도 구입이더군요. 덕희라는 걸 미리 알리면 재미가 없어질테니 있어도 사용 안했을 겁니다.
안드로이드폰 어댑터입니다.
사용 설명서. 설명서라기 보다는 양면 인쇄된 작은 카드입니다. 해커가 작성한 매뉴얼 답게 작은 지면에 모든 핵심이 들어 있습니다.
이상으로 개봉을 마치고 간단 테스트를 해 보기로 합니다. 개봉기 소감은 장점은 필요한 것들만 모아 놓은 것 같다는 것. 단점은 하드웨어 마감이 좀 거칠고 조악해 보인다는 점입니다. 마감이 거칠다는 건 손으로 직접 만져보면 알 수 있습니다. 덕분에 USB 포트에 넣을 때 삐그덕거리고 뺄 때 힘을 많이 주어야 합니다. 애지중지 아끼는 노트북이거나 자주 넣었다 빼었다 테스트해야 한다면 샌드페이퍼나 손톱깎기 줄칼 등으로 갈아서 매끄럽게 해 주는 작업이 필요할 것 같습니다.
마이크로SD 카드를 빼서 일반 리더기에 넣고 컴퓨터에 꽂아 확인해 봤습니다. 별 특이사항은 없네요. inject.bin 파일 하나만 달랑 들어 있습니다.
inject.bin이 뭘 하는지 확인을 위해 덕희양을 겁도 없이 USB 포트에 꽂아 봅니다.
그러자 화면에 시스템 메시지가 뜹니다. 이 메시지는 맨 처음 꽂았을 때 한번만 뜨고 다음부터는 뜨지 않습니다.
“키보드를 식별할 수 없어 키보드를 사용할 수 없으니 식별하려면 “Continue” 버튼을 누르세요. 키보드는 잘 작동하고 있고 꽂은 건 키보드가 아니라 USB라면 이 단계를 건너뛰세요.”
역시나 맥은 제대로 똑똑하네요.
그러나 똑똑한들 무슨 소용 있겠습니까. “Continue”를 누르든 창을 닫든 이미 키보드 HID로 인식되었고 inject.bin 코드는 이미 실행되었는데 말입니다…
덕희양이 뭘 했나 찾아 봤더니 열려있던 파인더 폴더명이 “kali-ios” 에서 “Hello World!!!”로 변경되었네요(파란 화살표). 탐색기에 아무 표시가 되어있지 않은 걸로 봐서(왼쪽 붉은 화살표) 일단은 맥을 속이는데 성공한 것 같습니다. 마이크로SD를 빼서 리더기에 정식 연결하면 우측 붉은 화살표처럼 정상적으로 인식됩니다.
이제 직접 코딩을 해 보기로 합니다. 코딩하는 단계는 초간단 그 자체입니다.
- 편집기를 열고 코드 입력
- txt로 저장
- 인코딩
- 실행!!!
덕희양이 사용하는 스크립팅 언어는 이해가 아주 쉽습니다. 예를 들어 “Hello World”를 보여주고 싶다면 “STRING Hello World”. “ENTER”는 말 그대로 엔터. “DELAY”는 몇 초 간격을 두는 데 사용되어 “DELAY 100″은 100 밀리세컨드로 1초입니다. 코드 실행이 걸리는 시간을 감안해 잘 계산해야 뒷탈이 없습니다. 이밖에 ALT F4, CONTROL ESCAPE, WINDOWS R, SHIFT TAB 등등. 주석은 “REM” 입니다. 검색해 보면 덕희양을 위한 재미난 코드도 많습니다.
1단계: 준비물
- 이 작업을 위해서는 Java가 설치되어 있어야 하고, 인코더가 필요합니다. 인코더는 아래 링크에서 다운로드 받을 수 있습니다.
- https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Downloads
Java를 인스톨하거나 일일히 인코딩하기 귀찮다면 기능을 선택하거나 직접 작성하면 인코딩해 주는 온라인 서비스도 있습니다.
2단계: 마이크로SD 카드 포맷
- FAT32, Master Boot Record로 포맷합니다.
3단계: 코드 작성해 .txt로 저장
- 윈도우라면 노트패드, 맥이나 리눅스는 평소 사용하는 편집기로 코드를 입력한 뒤 duckencode.jar 파일이 저장된 폴더에 텍스트 파일로 저장해 줍니다. 편의상 test.txt로 저장하겠습니다. 저는 맥에서 터미널을 열고, say로 기계음으로 욕 몇마디 하고, ASCII Art를 보여주는 테스트를 하려고 합니다. 그다지 고상한 결과물은 아니지만 코드 제작자의 노고를 생각해 그대로 사용했으니 양해 부탁드립니다. 쿨럭
4단계: 인코딩
- 윈도우라면 cmd.exe, 리눅스나 맥이라면 터미널을 열어duckencode.jar와 test.txt 파일이 저장된 디렉토리로 이동해 다음을 입력하고 엔터키를 누릅니다.java -jar duckencode.jar -i test.txt
여기까지 잘 따라 오셨다면 해당 폴더에 inject.bin 파일이 생성되었을 겁니다.
5단계: 실행!!!
- 일반 리더기를 사용해 마이크로SD 카드에 inject.bin 파일을 저장. 그런 다음 마이크로SD 카드를 덕희 본체에 넣고 USB 포트에 꽂아 줍니다.
요즘 인공지능이 대세라죠. 로봇 음성인 Zarvox로 욕이 몇마디 들린 뒤, 터미널 새 창이 열리고, 멋진 아스키 아트가 펼쳐집니다! 대략 성공이네요!
침투 테스터라면 리눅스용 Payload Generator를 빼놓을 수 없죠. Apache, Pure-FTPD, Burp Suite, SE 툴킷, 메타스플로이트, p7zip, 존더리퍼, nmap, samdump 등등이 포함됩니다. 바이러스 백신 우회를 위해 필요한 VID/PID 값을 찾아 vidpid.bin 파일에 입력하는 실행파일 VID_PID_SWAPPER.exe도 흥미롭네요 펌웨어도 그렇고 찾아보면 자료는 무궁무진합니다. 포럼도 있고요.
윈도우 10에서는 꽂아도 아무것도 묻지 않는다는 것만 확인했습니다. 스마트폰이나 태블릿, 노트북은 잠시라도 딴데 한눈 팔면 안되겠구나, 윈도우 로그인 암호 부질 없구나 등등 오만가지 생각들이 전광석화와 같이 스치고 지나갑니다.
미스터 로봇처럼 물리적 접근 금지 구역의 에어갭 컴퓨터 해킹을 위해 주차장 등에 일부러 떨어뜨리기에는 제게는 너무 비싼 녀석이라 해당사항 없을 것 같고, 이제 사용법을 알았으니 앞으로 일반 USB보다 조금 크고 묵직한 USB를 주워 횡재하는 기회가 있기를 바라면서. 덕희양의 능력은 어디까지인지 주말에 본격적으로 갖고 놀아봐야겠습니다!