
CVE-2016-5195 dirtycow by timwr 自動マルチファイルパッチツール
お断り: 私はこのコードを正式にテストしていません 教育ツールとして設計されています。
これは何をするものですか? android-dirtycow-replacer は、CVE-2016-5195 の dirtycow エクスプロイトを使用して、1000以上のファイルのリストにパッチを適用します。 10000に編集することもできますが、1000で十分なはずです。 まずファイルが異なることを確認し、異なる場合は置換を試み、エラーがあれば停止します。 ファイルを編集したり、selinux にパッチを当てたり、その他の方法でファイルを提供するのはあなたの仕事です。 dirtycow は読み取り可能なもののみを置換できます。そのため、このツールは最終的なツールではありません。
何度か同じことを言っていたらすみません、開発者頭なので このコードは Note 5 でテストされ、正しく機能するように見えました。ただし... このコードはほとんどテストされておらず、最終プロジェクトではありません。私は toolbox.c の dirtycow エクスプロイトを設計しており、 通常は読み取り不可能なファイル (init など) を上書きできるようにします。 なぜ toolbox なのか?なぜなら、toolbox を悪用して必要なルート + コンテキストを取得し、その後、必要なすべてのファイルを読み取れるからです。
必要条件 Linux(Ubuntu の最新版など、無料)、Android SDK および Android NDK(いずれも無料)。
使用方法 files.txt という名前のファイルを作成し、置換したいパスを左/右に記述します。 /system/build.prop /data/local/tmp/replace/build.prop 式の両側にファイルが存在することを確認してください。簡単なことだと思います! リストに追加する前に、まず cat でファイルを確認することをお勧めします。例: adb shell cat /init 左側のパスが置換されるファイルです (スペースに注意)。右側のパスが置換に使用するファイルです。
同梱の例 この例では、files.txt の例が同梱されています。テストファイルを指しています(編集して確認してください)。 テストファイルを含む2つのディレクトリもあります。replace/ と replacewith/ です。 replace/ ディレクトリ内には、beingpatched1、beingpatched2、..3、..4 の4つのファイルがあります。 beingpatched# のテキスト == unpatched001 --- unpatched004 replacedwith/ ディレクトリ内のファイルには、patchingdon1 から patchingdon4 までのテキストが含まれています。 'make push' と入力すると、コンパイルされ、これらのディレクトリ、files.txt、および replacer が /data/local/tmp/ にプッシュされます。 ...まだついてきていますか? 実際の使用手順(例) フォルダに解凍し、右クリックしてこのフォルダ内で2つのターミナルを開きます。 ......ヒント: 1つのターミナルウィンドウをクリックしてから、もう1つのターミナルウィンドウをクリックすると、両方のターミナルウィンドウが表示されたままになります。
1つのターミナルウィンドウで次のように入力します: make log
もう1つのターミナルウィンドウで次のように入力します: make push <===エラーはありませんか?
adb shell 次に cd data/local/tmp 次に ./replacer
メインプロジェクトの概要 -- このプロジェクトではありません 比較関数は toolbox.c のトリガーとして設計されています 比較関数はファイルをバイト単位で比較し、異なるかどうかを判断します。これが toolbox.c が /init の再読み込みを試みるトリガーになります。次に toolbox.c はログファイルを書き込みます (これも次のトリガーキーです)。 toolbox.c は試行後のログを別のログファイル (最終トリガー) に記録し、すべての関数が試行されたことを通知します。 これにより、失敗した場合に各フェーズで複数のコンテキストを試行してから諦めることが可能になり、おそらく必要になります。
android-dirtycow-replacer 私の目標は、toolbox.c または dumpstat.c 内でエクスプロイトとして使用する自動 dirtycow.c 置換ツールを設計することです。 android-dirtycow-replacer は、テキストファイルからパッチを適用するファイルを読み取り、ファイルが異なるかどうかをテストし、 異なる場合にのみ、android-dirtycow-replacer は dirtycow.c を使用してファイルにパッチを適用します。 繰り返しますが、このコードは、パッチ不可能なファイルにパッチを適用する手段として、toolbox.c / dumpstate.c に統合するように設計されています! 最終的なコードは、おそらく UID およびコンテキスト処理コードと絡み合うでしょう。これは私自身のコードの分岐点です。
このアプリには他の用途があるかもしれません しかし、現時点では私は他の用途のために設計しているわけではありません。 思いつく最も実行可能な用途は、起動後に一定のファイルリスト(フォントなど)を置き換えること、または 画面がオフの間にアプリがインターネットにアクセスする権限を削除することです。または、/etc 以下の他の多くの設定を 毎回の起動後に修復することです。
必須
現時点ではソフトウェアは更新されていません。サンプルコードとして掲載されています。 個人的には、このツールは現状のまま、範囲内の任意のデバイスで root を取得できる可能性があると考えています。また、その目標を正確に達成するための強力な 組織化ツールであるとも考えています。私にとっての問題は、現時点では自分の個人用携帯電話で root を取得することに興味がないことです。 私は Note 5 をクラッシュアウトさせて、とても素晴らしい状態にしましたが、再セットアップするのは大変な作業です。 お断り: 私はこのコードをどこでもテストしていません! 教育ツールとして設計されています。
問題がある場合 問題をリストアップしてください。テストデバイスで安全に修正できる限り、できるだけ早く修正します。