BadUSB
なんか流れてきたので。
USBに設計上の致命的な脆弱性が発見され、そのコードが公開される - GIGAZINE
3行で
何ができるのか
特定のデバイスのファームウェアを自由に書き換えられる ↓ USBメモリをUSBキーボードとして振舞うようにしたり、USBモデムに見せかけたりできる ↓ 当該USBメモリ上のデータを改竄したり、ネットワーク通信の経路を捻じ曲げたりできる
条件によってはHID(Keyboard)経由でなんか適当な操作をされる可能性もあるけど、ファームウェア上のロジックでしか実行できないから遠隔操作とはちょっと違う
(それに、デバイスマネージャ見たらMass Storageの他にHIDが生えてくるから怪しさ満点)
何が問題なのか
- パッケージを開けずにデバイスの挙動を変えられる
- 逆に言えばパッケージを壊すことなく開けられるならBadUSBでなくても書き換え可能
- 書き換えられたことを判別できない
- BadUSBを使わずに書き換えても同じ
- 他人から渡されたUSBメモリが信用できなくなる
- お前は元からそんなものを信用していたのか?
→ BadUSB実証コードの公開で何か目新しい攻撃方法が出現(実用化)したわけではない
気を付けるべきこと
結論
煽りすぎじゃボケ。
追記
NetworkManager も netctl も入れてないけど VMware Player で suspend させたい
https://gist.github.com/kikairoya/2db51f850ede358f44a9 これを /usr/local/bin/netctl として保存。
プログラマを辞めてから一年が経ちました。
エンジニアであることはやめていません。
open-vm-tools を linux-3.10 guest で動かせるようにした
A patch for workaround of open-vm-tools(2013.04.16) for Linux 3.10 kernel.
Linux 3.10 renames create_proc_entry, struct super_block::s_frozen and changes type of callback struct dentry_operations::d_revalidate, struct inode_operations::lookup.
(edit in 8/17)
Linux 3.10 has module vmw_vmci that conflicts vmci and vmhgfs. Simply removing vmci from open-vm-tools seems to work fine.
Boost.勉強会 #8 大阪 で喋ってきました +新見観光のおまけつき
移動記録
2/12
徒歩移動のみ。
- 1100- 本編
- 1800- 懇親会
2/12
前夜祭
@hotwatermorning先生が前入りして某社を見学するということで到着に合わせて襲撃。そのまま@akineko先生,@decimalbloat先生,@fadis_先生,@aizen76先生、@kyubuns先生と一緒に深夜まで騒いでました。
本編
背景その他
「ネタの指定があれば喋ります」といって参加表明してたら「GCCでなんか」というよくわからない指定をされたので、だいぶ苦し紛れにWindows+GCC(=Mingw)でSEHを使ってみるというネタを絞り出しました。 当初は50分喋らないといけない予定だったのが、どうにもボリューム増えなくて30分に縮めてもらったのが、スケジュールの遅延を相殺して結果的にはまあよかったのかなと。 ただ、絞り出せないとはいっても、一応前日までに一通り資料は完成して一回流して喋ってもいるので、やれるだけのことはちゃんとやってあるつもりです。
Boost.勉強会は割と人数が多くて聴衆のレベルを想定するのが難しいので、技術背景をどこまで説明するかがいつも悩みどころです。 今回はまあx86アセンブリくらいなら雰囲気で読めるだろうと思っていたら、アセンブリが出てきた瞬間に諦めた人も何人かいたようで、もう少し補足説明するべきだったかなと。 ただ、解らん時は「説明してくれ」ってその場で言ってもらえば最低限の解説はすぐに出来るので、あとでブログで「ついていけなかったです」とか言ってないでちゃんと質問してほしいです。
内容
Operaで大量に開いていたタブはほとんどが今回のネタのリソースです。(覚えてたら)後でまとめてURI出します。
発表資料はこのへん。
終了後、「Cygwinではどうなるの」と質問されましたが、Cygwinも同じやり方で動くはずです。ただし、cygwin1.dllはSEHをトラップしてSIGNALに変換しているので、その辺の挙動はだいぶ怪しくなると思います。
発表中質問のあった_set_se_translatorについては、これは単に常に一番先端の例外ハンドラからebp切り替えてthrowすればいいだけなので非常に簡単です。
ダブルフォルト等の備えに関しては、巻き戻し先探索中はシステムの例外ハンドラが[fs:0]に登録されているのでそっちでトラップされます。巻き戻し中は自分でどうにかしないといけないですが、単にabort()しても全く追跡できないのでどうすべきかはよくわかりません。
実装自体は一応それなりに動くはずですが、コーナーケースをつついたテストは出来ていないのと、DLLを通過させるとどうなるかもテストできていないので、まだネタの域を出ていません。本気で使いたい奇特な人が居たら連絡ください。
C++は黒魔術の無い素敵な言語です。
参考文献
発表時に開いていたページを列挙しただけ。
- SEH for gcc · GitHub
- Option Summary - Using the GNU Compiler Collection (GCC)
- http://msdn.microsoft.com/ja-jp/library/1deeycx5(VS.80).aspx
- GCC拡張インラインアセンブラ構文 - kikairoya’s diary
- http://msdn.microsoft.com/ja-jp/library/cc440193(VS.71).aspx
- http://www.patentstorm.us/patents/5628016/claims.html
- Machine Constraints - Using the GNU Compiler Collection (GCC)
- OpenRCE
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms679331(v=vs.85).aspx
- http://www.2beanet.com/wince/src/COREOS/CORE/DLL/SHX/CHANDLER.C.html
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms680552(v=vs.85).aspx
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms680609(v=vs.85).aspx
- やっと「マトモ」になった mingw-w64 - @a4lg のそろそろ技術的日記
- http://www.microsoft.com/msj/0197/exception/exception.aspx
- http://www.microsoft.com/msj/0197/exception/exceptiontextfigs.htm
- http://msdn.microsoft.com/en-us/library/aa260346(VS.60).aspx
- Win32デバッグ(12)・・・SEH(Structured Exception Handling): vanillaの日記
- http://msdn.microsoft.com/ja-jp/library/ff798099.aspx
- 呼出規約 - Wikipedia
- 抄訳メモ/unixwiz.net/Intel x86 Function-call Conventions - Assembly View - Glamenv-Septzen.net
- http://msdn.microsoft.com/ja-jp/library/ms384216(VS.71).aspx
- LibSEH - a Windows SEH compatibility library - ProgrammingUnlimited.Net
- Modifiers - Using the GNU Compiler Collection (GCC)
- http://sourcery.mentor.com/public/cxx-abi/abi.html#mangling
新見観光
猪風来美術館
- 満奇洞-方谷駅-美術館の道が狭くて死ぬかと思った(ペーパードライバーです)
- !!!芸術だぞ!!!
- 穴窯が思ったよりずっとでかい
- 土器であんなに精巧な細工ができるとは思ってなかった
- うまい肉いっぱい食わせて頂きました
発表翌日のバタバタの中準備対応していただいた@bolero_MURAKAMI先生、正体不明の集団に快く応対してくださった猪風来先生と奥様、ありがとうございました。
-
C++は黒魔術の無い素敵な言語です。