キヌボヌドは出力デバむスですか

研究は私のワヌクフロヌの䞍可欠な郚分です。 私は゜フトりェア、゜ヌスコヌド、オペレヌティングシステム、腺-あなたの手が届くすべおのものよく、たたは䞊叞の手、ここでは幞運ですを研究しおいたす。 しかし、すべおの研究が秩序によっお行われるわけではありたせん。時々、魂のために䜕かをするだけです私たちの䌚瀟は䞀般的に奚励しおいたす。 この研究は、暗号化に぀いおの䌚話から始たり、DLPをバむパスしお制埡された境界を越えおデヌタを移動するこずで終わりたした。



私はDLPシステムが本圓に嫌いです。 私の嫌いなものは、補品のマヌケティング戊略に基づいおおり、その゜リュヌションを䞀皮の「銀の匟䞞」の圢で衚しおいたす。これにより、あらゆる䌁業のすべおのデヌタ挏掩を防ぐこずができたす。 できたせん。 私の意芋では、DLPは2぀のケヌスで本圓に圹立ちたす-曲がった手によるデヌタ挏掩を防止するためali@domain.mailの代わりにall@domain.mailに支払いデヌタを送信するなど、デヌタを誰が運んだかを調査するのに圹立ちたす たずえば、Windowsの十分な知識を持぀専門家が、ほずんどすべおのフィルタヌを克服できるず圓初確信しおいたした。 やる気のあるむンサむダヌは、そのような専門家を芋぀けお、いく぀かのトリックを孊ぶこずができたす。 しかし、特定の耇合䜓でさたざたなトリックをテストするのは非垞に退屈なので、それらを䞀床に回避する方法を理解する必芁がありたした。











暗号解読の考え方は私の近くにあり、暗号が倧奜きです。 むンタヌネットの倖でさえ、私たちはそれが䜿甚する非垞に倚くのものに囲たれおいたす-通垞のパスや茞送チケットから、私たちが支払うプラスチックカヌドたで。 電子眲名、自動怜蚌、眲名の䟿利な゚クスポヌト、倖郚チェック甚の公開鍵を衚瀺するための別のフィヌルド-これが䟿利であれば、゜ヌシャルネットワヌクずむンスタントメッセンゞャヌでメッセヌゞに眲名できれば幞いです。 私は幻想を抱いおいない-そのような倉化は決しお倧きくないだろう。 自分で始めなければなりたせん。 䜕らかの圢で、セキュリティの疑わしい気持ちのために自分自身により倚くの問題をもたらす方法に぀いおのこの倢の曲線は、面癜い考えに至りたした- カタパルトがキヌボヌドに暗号化を埋め蟌むずしたら



キヌボヌドにいく぀かの远加ボタンを远加できるず考えられおいたした。 たずえば、1぀は、公開キヌ、たたはすぐに蚌明曞を「印刷」するためにキヌボヌドを起動したす。 別の方法では、キヌボヌドを暗号化モヌドにしたす。印刷されたテキストはコンピュヌタヌに送信されず、最初に暗号化され、暗号化されたテキストは「画面に印刷されたす」。

近い将来に実行されるパスに熊手を投げるこずに察する私の倧きな愛を考慮しおも、そのようなキヌボヌドの実行可胜性を理解したした。 この認識は、そのようなキヌボヌド甚の独自の画面が必芁になった盎埌に発生したした。それがないず、暗号化する前にテキストを芋お線集するこずもできたせん。

さらに、質問が思い浮かびたした コンピュヌタヌはどのようにしおそのような「キヌボヌド」に情報を送信できたすか この問題の解決策は、キヌず蚌明曞を入力するために必芁です。



倚くのオプションがありたす





楜しいオプションの1぀は、点滅するLEDむンゞケヌタnumロック、capsロック、スクロヌルロックを䜿甚するこずです。 キヌボヌドのLEDの状態を監芖し、特定のLEDを点灯するように指瀺するのはコンピュヌタヌです。 このチャネルを䜿甚しお、独自の目的で情報を送信できたす。 これに぀いおは埌で説明したす。



この段階で、私はもはや暗号キヌボヌドの䜜成に興味がないこずに気付きたした。 反察に、DLPシステムに攻撃を実装するこずは非垞に興味深いです。 さようなら、暗号化キヌボヌド、こんにちは、情報抜出デバむス。



壊れおいないものを修埩する



LEDの点滅を通じおコン​​ピュヌタヌから情報を転送するこずは新しいアむデアではありたせん。 最も早い゜ヌスを指摘するのに途方に暮れおいたす。 たずえば、文字通りそのような方法は、1999幎にNept StevensonのCryptonomiconで䞍滅になりたした。 2012幎10月29日からリンクに技術的な投皿がありたす。 それにもかかわらず、芞術的な蚘述が十分に正確ではなかったため、私は自分の工芞品を発明する道を歩み、既補のプロトタむプを䜜成するよりもずっず埌に、私のようなアむデアに぀いおのリンクを芋぀けたした。



タスクは明確で、2぀の郚分で構成されおいたす。 簡単な郚分は、点滅するキヌボヌドLEDの圢で特定のファむルを衚瀺するプログラムを䜜成するこずです。 難しい郚分は、キヌボヌドずしお衚瀺され、プログラムからの「メッセヌゞ」をキャッチする䜕かをするこずです。



私はプログラムをそれほど耇雑にしないこず、そしお最初に最も簡単なコヌディング方法を䜜るこずに決めたした。 NumロックずCaps Lock゚ンコヌド2ビットLEDオン-1、オフ-0、スクロヌルロックは保存マヌカヌずしお機胜し、各バむトは2ビットの4぀のグルヌプに分割されたした。 Scroll Lockが抌されたずいうデヌタを受信した将来の受信機は、次の2ビットを保存するこずが理解されたした。



それは受信者次第でした。 その埌、Malinkaクロヌンの1぀、぀たりnano pi m1が助けになりたした。 私は事前にそれを泚文したした-ただ遊んでみおください、それはちょうどアプリケヌションが芋぀かったので、ちょうど䞀臎したした。









OSずしお、私はArmbianを䜿甚したした。これはハヌドりェア䞊で非垞にうたく機胜したした。 プロゞェクト自䜓は、画像を組み立おるためのかなりシンプルで䟿利なスクリプトを提䟛したす。 USBガゞェットがどのように機胜するかを分析し、OSに付属するHIDキヌボヌドガゞェットをテストするのに数日費やしたした。 マナだけで滑らかでした。 m1はそれ自䜓をキヌボヌドずしお導入し、ボタンの抌䞋を正しく゚ミュレヌトしたした。 しかし、LEDのステヌタスの読み取りは機胜したせんでした。 HIDパケットが到着したしたが、誀ったデヌタが含たれおいたした。 通垞のコンピュヌタヌの暪にあるUSBスニッファヌは、パケットが正しく飛び出しおいるこずを瀺したしたが、鉄片でそれらで起こっおいたこずは、すでに理解できたせんでした。 usb関連のドラむバヌをデバッグしようずしお1週間ほど費やしたしたが、圹に立ちたせんでした。 おそらく、通垞のラズベリヌパむを飲むず、すぐにすべおが起動したす。 たたは、おそらくアルビアンでは、すべおが束葉杖ですでにバックアップされおおり、珟圚動䜜しおいたす。 実隓から玄1幎半が経過しおおり、珟圚のバヌゞョンではチェックを行っおいないこずを明確にしたす。



鉄、ヘッド、OSの゜ヌスを壊さなくなった䞻な理由は、問題の解決策を芋぀けたからです。 Habré- Pastildaで芋぀かったのは面癜いです。 私の考えがハヌドりェアパスワヌドマネヌゞャヌの考えず非垞に亀差しおいるのは二重に面癜いです。 確かに、そのようなマネヌゞャヌは、暗号化キヌボヌドの元のアむデアず同じ皋床に存圚しない運呜にあるず信じおいたす。 たあ、それは問題ではありたせん...連䞭はボヌドを集めおファヌムりェアを曞きたした。 必芁な䜜業の90はすでに完了しおいたす。









パスティルダを取埗する詊みはすぐには成功したせんでした。 サヌドピンのディレクタヌは、1枚のボヌドだけが必芁だず蚀った盎埌に私に興味を倱いたした。 そしお、私はこれを圌のせいにするこずはできたせん-䜜品の生産は非垞に高䟡であり、私は少なくずもプロトタむプを望んでいたした。 いずれにしおも、私はただ鉄片を手に入れたした。



私はデバむス甚のファヌムりェアの䜜成を扱ったこずがなく、遠くからしか芋おいたせん。 しかし、最初から曞く必芁はありたせんでした-ファヌムりェアコヌドはgithubにありたした。 同僚が私にそれを組み立おお鉄片に入れる方法を教えおくれたした私はプログラマヌですが、さらに正確になりたす「プログラマヌでなくなっお、2倍のプログラミングを始めた方法」。 残りは簡単でした-HIDパケットの凊理を担圓するコヌドを芋぀け、内郚メモリに曞き蟌むためのビットシヌケンスアセンブリを䜜成したした。









そしお、基本的な操䜜性の怜蚌の埅望の瞬間です 非垞に長いバむトシヌケンスをLEDで正しく「点滅」させるこずができたした。 機胜チェック䞭に、いく぀かのDLPずSZIのチェックでは、私の行動に興味深いものは芋られず、境界デヌタが静かにリリヌスされたした。 この段階で、私はこの攻撃をRadianceず呌ぶこずにしたした。これを英語では「radiance」、「luminosity」ず呌びたす。



関係のない人の衚地



成功した詊隓からの幞犏感が過ぎたら、統蚈枬定を行う時が来たした。



私の゜リュヌションの速床ず信頌性はかなり平凡だったので、ここで私はすでに動揺しおいたした。 4秒で5バむト、぀たり 1.25 bps









ずおも遅いです。 䜕よりも優れおいたすが、この方法で取り出せるのはドキュメントなどの小さなファむルのみです。 LEDを点滅させ、写真機噚でこれらの点滅を撮圱しお、速床が毎秒1000ビットを超えるこずができるず䞻匵しおいる研究者を思い出しおください。 アナログ倉換なしでも「LEDを点滅させる」ず垞に蚀いたすが、実際に凊理されるのはデゞタルデヌタのみです、理論的に速床を毎秒10バむト以䞊に䞊げる方法は芋圓たりたせん。 さらに、LEDの点滅間隔を短くするほど、受信するコヌディング゚ラヌが倚くなりたす。オペレヌティングシステムの制限が機胜し、「点滅」の䞀郚が倱われた可胜性がありたす。次にオプション。 これは驚くこずではありたせんが、それでも䞍快です。 その結果、私はそれらの同じ5バむトのレベルで遅延を残しおこれに萜ち着くこずに決めたした-1時間続く実隓はこの速床で゚ラヌがなかったこずを瀺したした。



しかし、信号間の䌑止を修正しおも、スピヌドを求めお戊うわけではありたせん。









私が芋た枛速芁因の1぀は、2ビットでも送信するにはいく぀かのコマンドが必芁であるずいう事実でした。 2぀の単䞀ビットを送信する必芁があり、すべおのLEDが最初はオフになっおいるず想像しおください。 私のコヌディングシステムでは、それらを送信するには、3぀のキヌボヌドLEDをすべお点灯させる必芁がありたす。 LEDを点灯する機胜を呌び出しお、キヌボヌドのボタンを抌すこずを゚ミュレヌトするのに3回かかりたした。 䞀床にすべおのLEDのステヌタスをすぐに送信できる堎合、倧幅な時間の節玄になりたす。 さらに、HIDパケットのステヌタスは3぀のLEDではなく、最倧5぀です。実際、最倧10バむト/秒の速床の増加が芋られたした。䞭間LEDがなく、1぀のパッケヌゞで5ビットが転送されたす。



しかし、私はこの最適化をチェックするこずができたせんでした。 私はさらに匷力なものを思い぀いたからです 将来を芋据えお、コヌディング゚ラヌなしで速床が毎秒600バむトに達したず自負しおいたす。 HIDパケットを送信するこずで、すべおのLEDのステヌタスを実際にプログラムで蚭定できるこずがわかりたした。 独自の圢匏のHIDパケットを送信しおみたせんか 実際、すべおがそれほど単玔ではありたせん。



そのようなものがありたす-「レポヌト蚘述子」。 これは、デバむスの初期化䞭にキヌボヌドによっお送信される特別な構造です。 キヌボヌドずコンピュヌタヌの通信圢匏の説明を瀺したす。 䞀般的なケヌスでは、6バむトのパケットがキヌボヌドからコンピュヌタヌに送られ、3ビットが固定された各1バむトのパケットを受信するこずを瀺しおいたす。 蚘述子で提䟛されおいないパケットを送信しお宇宙のバランスを厩さないようにするため、蚘述子に時々32バむトのパケットがキヌボヌドに到着するずいう指瀺を远加したした。 たあ、圌はそれらを送り始めたした。 これは、䞊蚘の600バむト/秒を達成するのに十分でした。 朜圚的に、DLPシステムはHID蚘述子が倉曎されたこずを確認し、攻撃を怜出できたしたが、䞻芁なusb蚘述子には觊れたせんでした-すべおのシステムの芳点から、キヌボヌドは同じでした-シリアル番号ず他の識別子は同じたたでした。



新しいアプロヌチは、速床だけでなく安定性にも満足しおいたすコヌディング゚ラヌがなく、デヌタ転送䞭でも静かにキヌボヌドを䜿甚するこずができたした以前の方法でも可胜ですが、これには特殊効果が䌎いたした。









それから、2016幎のZeronightsの時が来たしたそう、私はこの蚘事を1幎半曞くのが面倒でしたので、デバむスを䜿いたいすべおの人にデモを行いたした。









䞀郚のDLPの代衚者はそこで圌女を芋お、保護を远加するこずを玄束しおいるようにさえ芋えたした。 確認する必芁がある堎合がありたす。



結論ずしお、私はこのデバむスの開発に぀いおもう少し蚀葉を远加したいず思いたすが、それはしたせんもちろん、1幎半は過ぎたせん-すでにやりたした。 ベスレヘム、Bluetooth、さらには3Gモデムなど、信号䌝送甚の鉄にワむダレスの䜕かを取り付けるこずができたす。 これにより、情報の転送が倧幅に簡玠化されたす。



別の改善点は完党に特殊なプレヌンにありたす-しかし、このような攻撃を行うために別のデバむスは必芁ないず蚀ったらどうでしょうか ラズベリヌもパスティルダもありたせん。 私たちはそれぞれ携垯電話を持っおいたす。 䞀郚の人にずっおは、これはAndroidフォンですらありたす。 ちなみに、これはLinux OSの短期的な盞察的なものです。 さらに蚀うず、nano pi m1をAndroidでもちろんルヌト䞊で䜿った私の実隓を思い出しお、キヌボヌドで衚瀺されるカヌネルモゞュヌルをむンストヌルするこずが可胜です。 同様のモゞュヌルは、携垯電話向けのカリバヌゞョンに含たれおいるため、すべおが本物です。 今では攻撃はほずんど無料であり、それを改善する方法はただ想像できたせん。



ナむトホラヌ



私はこの蚘事の䞻芁なトピックから脱出し、陰謀論ずパラノむアで少しヒットしたいず思いたす。 非垞に簡単な質問をしおみたしょう-コンピュヌタヌの電源を入れた埌、最初にキヌボヌドで䜕を入力したすか 誰かが時折UEFI蚭定BIOSに入り、誰かがリストからオペレヌティングシステムを遞択する必芁がありたすが、それでも、ほずんどのナヌザヌは資栌情報を入力しおOSに入りたす。 しかし、キヌボヌドメヌカヌがファヌムりェアにコヌドを远加し、ファヌムりェアにナヌザヌ統蚈を远加した堎合はどうなりたすか そのようなキヌボヌドは、OSをロヌドし、ナヌザヌずしおログむンする方法に関するデヌタを簡単に受信したす。 キヌボヌドのキヌストロヌクにより、OSに぀いお重芁な仮定を立おるこずができたす。 比范的蚀えば、ctrl + alt + f1のようなキヌストロヌクず、頻繁なCaps Lockクリック oh、irony はLinuxで䞀般的で、win + m、win + dはすでにWindowsです。



コンピュヌタヌの電源は入っおいるがキヌボヌドが䜿甚されおいない時間を分析するこずにより、デバむスはコンピュヌタヌが無人の状態にあるこずを掚枬できたす。 この知識ず䞀緒に、すべおがすでに攻撃に察しお準備されおいたす-コンピュヌタヌは無人で、ロックされおいる堎合はロックを解陀したす-資栌情報が既知で、OSが既知です-システムで修正するために適切なペむロヌドを遞択できたす。 そしお、攻撃に気付いたずしおも、キヌボヌドが非難される可胜性は䜎く、すべおが「りむルス」に起因する可胜性が高くなりたす。 ほが完璧な攻撃。



䞊蚘は完党に理論的な補䜜のように芋えたす。 しかし、そのような緎習の前にどれくらいの時間が残っおいたすか



その他のブログ蚘事



→ UACバむパスたたは3぀の゚スカレヌションのストヌリヌ

UAC芁求をバむパスするWindowsセキュリティメカニズムの調査。



→ SDLのない生掻。 冬2017

開発者がどこでもSDLを䜿甚しない限り、私は垞に仕事をしたす。



All Articles