USB/IP тыюу

Жергиликтүү тармак аркылуу алыскы компьютерге USB түзмөгүн туташтыруу милдети дайыма келип чыгат. Төмөндө бул багыттагы менин издөөлөрүмдүн тарыхы жана ачык булактуу долбоордун негизинде даяр чечимге алып баруучу жол бар. USB/IP бул жолдо ар кандай адамдар тарабынан кылдаттык менен орнотулган тоскоолдуктарды, ошондой эле аларды айланып өтүү жолдорун сүрөттөп.

Биринчи бөлүк, тарыхый

Эгерде машина виртуалдык болсо, мунун баары оңой. Хосттан виртуалдык машинага USB багыттоо функциясы VMWare 4.1де пайда болгон. Бирок менин жагдайымда, WIBU-KEY деп аныкталган коопсуздук ачкычы виртуалдык гана эмес, ар кандай убакта ар кандай машиналарга туташтырылышы керек болчу.
2009-жылы издөөнүн биринчи айлампасы мени жабдыктын бир бөлүгүнө алып келди TrendNet TU2-NU4
артыкчылыктары:

  • кээде ал тургай иштейт

жактары:

  • дайыма иштебейт. Айталы, Guardant Stealth II коргоо ачкычы ал аркылуу башталбайт, "түзмөктү иштетүү мүмкүн эмес" деген ката менен ант берет.
  • Башкаруу үчүн программалык камсыздоо (окуңуз: USB түзмөктөрүн орнотуу жана чыгаруу) өтө начар. Буйрук сабынын которуштуруулары, автоматташтыруу - жок, биз уккан жокпуз. Баары сенин колуң менен жасалат. Nightmare.
  • Башкаруу программасы уктуруу аркылуу тармактын аппараттык жабдыктарынын өзүн издейт, ошондуктан ал тармактын бир уктуруу сегментинде гана иштейт. Аппараттык бөлүктүн IP дарегин кол менен көрсөтө албайсыз. Аппараттык бөлүк башка ички тармактабы? Анда сизде көйгөй бар.
  • Иштеп чыгуучулар аппараттан баш тартышты, мүчүлүштүктөр жөнүндө отчетторду жөнөтүү пайдасыз.

Экинчи раунд анчалык алыс эмес убакытта болуп, мени макаланын темасына алып келди - USB/IP долбоору. Өзүнүн ачыктыгы менен өзүнө тартат, айрыкча жигиттер ReactOS алар үчүн айдоочуга кол койду Windows, ошондуктан азыр баары x64тө да тест режими сыяктуу эч кандай айланма жолдорсуз иштейт. Бул үчүн ReactOS командасына чоң рахмат! Баары сонун угулат, чындыгында чынбы же жокпу, билип көрөлү. Тилекке каршы, долбоордун өзү ташталган жана колдоо табуу кыйын — бирок биз дагы эле анын үстүндө иштеп жатабыз, булак коду бар, биз аны аныктайбыз!

Экинчи бөлүк, сервер-Linux

USB түзмөктөрүн тармак аркылуу бөлүшкөн USB/IP серверин төмөнкү жерде гана орнотууга болот Linux-негизделген ОС. Linux бул Linux, андыктан аны виртуалдык машинага орнотолу. Debian Минималдуу конфигурацияда 8, стандарттуу кол кыймылы:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip

Жайгашуу. Андан кийин Интернет сиз usbip модулун жүктөө керек деп сунуш кылат, бирок - салам, биринчи тырмоо. Мындай модулу жок. Себеби тармактагы колдонмолордун көбү 0.1.x эски бутагына тиешелүү, ал эми акыркы 0.2.0 версиясында usbip модулдары ар кандай аталыштарга ээ.

Ошондуктан:

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip

Келиңиз, система башталганда аларды автоматтык түрдө жүктөө үчүн төмөнкү саптарды /etc/modules кошолу:

usbip-core
usbip-host
vhci-hcd

usbip серверин баштайлы:

sudo usbipd -D

Андан ары, универсалдуу акылмандык бизге usbip серверди башкарууга мүмкүндүк берген скрипттер менен келет деп айтат - ал тармак аркылуу кайсы түзмөктү бөлүшөрүн көрсөтүү, статусун көрүү жана башкалар. Бул жерде бизди дагы бир бакча куралы күтүп турат - 0.2.x бутагындагы бул скрипттер кайрадан аталды. Колдонуу менен сиз буйруктардын тизмесин ала аласыз

sudo usbip

Буйруктардын сүрөттөлүшүн окугандан кийин, талап кылынган USB түзмөктү бөлүшүү үчүн, usbip анын Bus ID билгиси келери айкын болот. Урматтуу көрүүчүлөр, аренадагы №3 рейк: автобустун ID-си бизге берет lsusb (бул эң айкын жол көрүнөт) - ага туура келбейт! Чындыгында, usbip USB хабдары сыяктуу жабдыктарды этибарга албайт. Ошондуктан, биз камтылган буйрукту колдонобуз:

user@usb-server:~$ sudo usbip list -l
 - busid 1-1 (064f:0bd7)
   WIBU-Systems AG : BOX/U (064f:0bd7)

Эскертүү: бул жерде жана андан ары тизмелерде мен өзүмдүн USB ачкычымдын мисалында бардыгын сүрөттөп берем. Аппаратыңыздын аталышы жана VID:PID жуптары ар кандай болушу мүмкүн жана башкача болот. Меники Wibu-Systems AG деп аталат: BOX/U, VID 064F, PID 0BD7.

Эми биз аппаратыбызды бөлүшө алабыз:

user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete

Ура, жолдоштор!

user@usb-server:~$ sudo usbip list -r localhost
Exportable USB devices
======================
 - localhost
        1-1: WIBU-Systems AG : BOX/U (064f:0bd7)
           : /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1
           : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)

Уч салам, жолдоштор! Сервер тармак аркылуу аппараттык камсыздоону бөлүштү жана биз аны туташтыра алабыз! Болгону /etc/rc.local ичинде usbip демонунун автостартты кошуу гана калды

usbipd -D

Үчүнчү бөлүк, кардар тарап жана чаташкан

Бөлүшүлгөн түзмөктү тармакта иштеген машинага туташтырыңыз Debian Мен аны ошол эле серверде дароо сынап көрдүм, жана баары кемчиликсиз туташты:

sudo usbip attach --remote=localhost --busid=1-1

Өтүү WindowsМенин учурда ал болду Windows Server 2008R2 Стандарттык чыгарылышы. Расмий колдонмодо алгач драйверди орнотуу суралат. Процедура Windows кардары менен кошо берилген окуу куралында жакшы сүрөттөлгөн; биз көрсөтмөлөрдү аткардык жана баары жакшы иштеди. Ошондой эле, XPде эч кандай көйгөйсүз иштейт.

Кардарды таңгактан чыгарып, биз ачкычыбызды орнотууга аракет кылабыз:

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Ой оо. Бир жерден ката кетти. Келиңиз, Google жөндөмүн колдонолу. Сервер бөлүгүндө константаларда бир нерсе туура эмес экендиги жөнүндө фрагменттүү белгилер бар, иштеп чыгуучулар 0.2.0 версиясына өтүүдө протоколдун версиясын өзгөртүшкөн, бирок Win кардарында муну унутуп коюшкан. Сунушталган чечим булак кодундагы константты өзгөртүү жана кардарды кайра куруу болуп саналат.

Бирок мен бул процедура үчүн Visual Studio жүктөп алгым келбейт. Бирок менде эски Хиу бар. Баштапкы коддо константа кош сөз катары жарыяланган. Келгиле, файлдан 0x00000106 менен алмаштырып, 0x00000111 издейли. Унутпаңыз, байт тартиби тескери. Натыйжада эки дал келүү, биз жамаачы:

[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11

Ааа... ооба!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1

Окуя ушуну менен бүтүшү мүмкүн эле, бирок музыка көпкө созулган жок. Серверди кайра жүктөгөндөн кийин, мен кардардагы түзмөк орнотулган эмес экенин билдим!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Болду. Баарын билген Google да бул суроого жооп бере алган жок. Ошол эле учурда, серверде жеткиликтүү түзмөктөрдү көрсөтүү буйругу муну абдан туура көрсөтүп турат — мына ал ачкыч, сиз аны орното аласыз. Мен аны астынан орнотууга аракет кылып жатам Linux - Иштейт! Эгер биз аны астынан сынап көрсөк WindowsОо, коркунучтуу – ал иштейт!

Акыркы көйгөй: сервердин кодунда бир нерсе жетишпейт. Түзмөктү бөлүшкөндө, ал андан канча USB дескрипторлорун окубайт. Ал эми түзмөктү астынан орноткондо Linux, бул талаа толтурулган. Тилекке каршы, өнүгүүнүн алкагында Linux Мен "make && make install" менен таанышмын. Ошондуктан, көйгөй бир топ кир хакердик ыкма менен чечилди — аны /etc/rc.local файлына кошуу.

usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00

Жыйынтыктоочу бөлүгү

Кээ бир сыноолордон кийин, ал иштейт. Каалаган нерсеге жетишилди, эми ачкычты каалаган компьютерге орнотсо болот (жана, албетте, орнотулган эмес), анын ичинде тармактын уктуруу сегментинен тышкары. Кааласаңыз, муну командалык кабык скриптин колдонуп жасай аласыз. Эң жакшысы, ырахат толугу менен бекер.
Менин тажрыйбам хакерлерге маңдайыма жазылган тырмоону айланып өтүүгө жардам берет деп үмүттөнөм. Конул бурганын учун рахмат!

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster