아두이노 Diskpart usb의 취약점을 사용해서
노트북또는 컴퓨터를 임의로 조작하게 하거나 백도어를 심을 수 있습니다.
1. 장비 구입하기
필요 장비
ATTINY85 Arduino General Micro USB
가격 1.8 $ US
2. 필요 프로그램 다운하기
Arduino - Software IDE 다운하기
EXE로 설치하기 : Windows Installer, for Windows XP and up
ZIP파일로 설치하기 : Windows ZIP file for non admin install
3. 필요 드라이버 다운하기
링크 : https://github.com/digistump/DigistumpArduino/releases
스크롤을 내려서 Digistump.Drivers.zip 을 다운받아 주세요
바탕화면에 압축을 풀어주시고 폴더로 들어가셔서
DPinst64.exe 파일을 실행하여 설치를 진행해주세요.
4-1. Arduino IDE 환경설정하기.
아까 다운받았던 Arduino IDE를 실행해주세요.
파일 > 환경설정
추가적인 보드 매니저 URLs 항목에 하단 URL을 입력해준다.
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
코드를 확인하고 싶으면 해당 사이트를 들어가면 확인해 볼 수 있습니다.
4-2. Arduino 보드 설정하기.
툴 > 보드 > 보드 매니저
보드 매니저에서 타입을 Contributed로 눌러주세요.
Disistump AVR Boards를 설치해주세요 !
다운로드한 AVR Boards를 장착해 봅시다.
툴 > 보드 > diskpart (default 16.5mhz)
이로서 설정은 끝나게 됩니다 .!
5. Keyboard 예제를 통해 BadUsb Arduino Diskpart를 해봅시다!
일단 예제를 가져옵시다.
파일 > 예제 > Diskpart Keyboard
아래와 같이 창이하나 뜨면 예제를 성공적으로 가져온 것입니다 !
프로그래머를 설정해줍시다.
툴 > 프로그래머 > USBTinyISP
음 이거 하는 이유는 딱히 없습니다 ㅎ.. 하셔도 되고 안하셔도 되는 부분입니다.
코드를 작성하신후 Diskpart Usb를 절대 꼽지 않은 상태에서 -> 화살표를 눌러 upload를 해주시고 diskpart usb를 꼽아주세요 !.
위에 Plug in device now.. 라 표시가 뜰때 diskpart usb를 꼽아주시면 됩니다.
성공적으로 진행을 하셨다면 하단과 같이 Complete가 출력됩니다.
이제 메모장을 키시고 diskpart usb를 꼽고 기다리시면
Hello Digispark가 자동으로 입력이 됩니다.
6. diskpart usb Arudino 소스코드를 작성해 봅시다.
void setup(){} 이부분은 제일 상단에 존재하며 사용하지 않아도 됩니다.
void loop(){} 이 부분은 setup문 바로 아래에 존재하고 필수적이지는 않지만 일반적으로 사용한다 합니다.
DigiKeyboard.sendKeyStroke(0) | void loop(){} 코드안에서 제일 처음으로 사용됩니다.
지연 후 첫 문자 누락 방지를 위해 사용됩니다.
DigiKeyboard.println("Hello") | 해당 문자열이 자동으로 입력이 됩니다.
DigiKeyboard.delay(5000); | 1000이 1초이며 5000이면 5초동안 지연을 시킵니다.
Key_Arrow_Left -> 마우스 이동하기 이게 안된다면 0x50을 대신해서 적어주시면 됩니다.
정의된 부분들
#define MOD_CONTROL_LEFT (1<<0) |
#define MOD_SHIFT_LEFT (1<<1) |
#define MOD_ALT_LEFT (1<<2) |
#define MOD_GUI_LEFT (1<<3) |
#define MOD_CONTROL_RIGHT (1<<4) |
#define MOD_SHIFT_RIGHT (1<<5) |
#define MOD_ALT_RIGHT (1<<6) |
#define MOD_GUI_RIGHT (1<<7) |
#define KEY_A 4 |
#define KEY_B 5 |
#define KEY_C 6 |
#define KEY_D 7 |
#define KEY_E 8 |
#define KEY_F 9 |
#define KEY_G 10 |
#define KEY_H 11 |
#define KEY_I 12 |
#define KEY_J 13 |
#define KEY_K 14 |
#define KEY_L 15 |
#define KEY_M 16 |
#define KEY_N 17 |
#define KEY_O 18 |
#define KEY_P 19 |
#define KEY_Q 20 |
#define KEY_R 21 |
#define KEY_S 22 |
#define KEY_T 23 |
#define KEY_U 24 |
#define KEY_V 25 |
#define KEY_W 26 |
#define KEY_X 27 |
#define KEY_Y 28 |
#define KEY_Z 29 |
#define KEY_1 30 |
#define KEY_2 31 |
#define KEY_3 32 |
#define KEY_4 33 |
#define KEY_5 34 |
#define KEY_6 35 |
#define KEY_7 36 |
#define KEY_8 37 |
#define KEY_9 38 |
#define KEY_0 39 |
#define KEY_ENTER 40 |
#define KEY_SPACE 44 |
#define KEY_F1 58 |
#define KEY_F2 59 |
#define KEY_F3 60 |
#define KEY_F4 61 |
#define KEY_F5 62 |
#define KEY_F6 63 |
#define KEY_F7 64 |
#define KEY_F8 65 |
#define KEY_F9 66 |
#define KEY_F10 67 |
#define KEY_F11 68 |
#define KEY_F12 69 |
#define KEY_ARROW_LEFT 0x50 |
'『 Haking 』' 카테고리의 다른 글
PE View 설치하기 +설명서 (1) | 2020.12.10 |
---|---|
비공개글 (0) | 2019.12.10 |
사이트 모음 (0) | 2019.05.20 |
댓글