前節ではHolsteinモジュールにStack Overflowを見つけ、脆弱性を利用してRIPを取れることを確認しました。この節ではこれをLPEに繋げる方法と、さまざまなセキュリティ機構を回避する方法を学びます。 権限昇格の方法 権限昇格の方法にはいろいろありますが、最も基本的な手法はcommit_credsを使う方法です。これは、カーネルがroot権限のプロセスを作る時に実行する処理と同じことを実行する方法で、非常に自然な考え方です。 root権限を取った後にもう1つ重要なのが、ユーザー空間に戻ることです。今カーネルモジュールをexploitしているのでコンテキストはカーネルですが、最終的にはユーザー空間に戻ってroot権限のシェルを取る必要があるので、クラッシュせずにユーザー空間に戻る必要があります。 まずはこれらの理論的部分について説明します。 prepare_kernel_cre
2024/12/23 KASLRのLはLocationを書いていましたがLayoutがただしいです。修正しました。 はじめに 本記事はlinuxに存在する1Address Space Layout Randomization(ASLR)、およびKASLR(Kernel ASLR)という、やたら長い名前のセキュリティ機能を紹介するものです。メモリアドレスの概念やC言語ポインタが理解できれば読める内容だと思います。 ASLR 概要 あるシステムをクラッカーが攻撃する方法はいろいろありますが、そのうちの一つが不正な方法によってプログラムに特定の命令を実行させる、不正なデータを操作させるというものです。攻撃には、(当然ながら)攻撃に使う命令、あるいはデータのアドレスが必要になります。ASLRが無い環境においてはプログラムのコードやデータは2固定されたアドレスにロードされるので、動かしているプログラ
remap_pfn_range関数(ドライバーのmmap呼び出しで使用)を使用して、カーネルメモリをユーザースペースにマップできます。それはどのように行われますか?誰かが正確な手順を説明できますか?カーネルモードは特権モード(PM)ですが、ユーザースペースは非特権(NPM)です。 PM CPUはすべてのメモリにアクセスできますが、NPMでは一部のメモリが制限されています-CPUはアクセスできません。remap_pfn_rangeが呼び出されると、制限されていたメモリの範囲はどのようになりますか? PMユーザースペースにアクセスできるようになりましたか? remap_pfn_rangeコードを見ると、pgprot_t structがあります。これは、保護マッピング関連の構造体です。保護マッピングとは何ですか?上記の質問に対する答えですか?
必要なもの 7-Zip Flashtool FTF (今回はD5803_23.0.A.2.93_Promoter.ftfを使用) 手順 FTFファイルを7-Zipにて展開する。(右クリック メニューから、[7-Zip]→[ここに展開]をクリックする。) Flashtoolを起動し、[Tools]→[Sin Editor]をクリックする。 system.sinファイルを選択し、[開く(O)]をクリックする。 [Extract Data]をクリックする。 system.sinと同じフォルダーにsystem.ext4が出来ているので、7-Zipにて展開する。(右クリック メニューから、[7Zip]→[¥system¥に展開]をクリックする。) gps.confを任意の場所へコピーする。 Sony Xperia X Compact ブラック F5321 [並行輸入品] posted with am
自分が使っている限りではあまり影響に気づいていませんでしたが、KitKatではSELinuxに正式に対応(それまではインストールされていましたが、Permissiveモードで動作)したためメーカがビルドする際に作成したSELinuxのルールによりアクセス制限が掛けられる(Enforcingという)ようです。 これに気づいたきっかけとしては、先日書いたColorflyのタブレットでのroot権限でのフラッシュメモリアクセス制限の理由を調べていたためです。 SELinuxの詳細はまだ掴みきれていませんが、これを以前のバージョンのようにPermissive(ルールファイルは読込し解析を行うが、違反を発見した場合はログ出力のみでアクセス制限はしない)モードで動作させるために一番手っ取り早い方法としてはSELinux Mode Changerを紹介します。 このアプリ、当然ながらroot権限でなけれ
題名は2.2にしましたが、別にカーネルは2.2専用というものがあるわけでもないはず。 以下、非常に適当な情報なので自分で確認した上で適宜読み替えてください。 Androidのソースは http://android.git.kernel.org/ にある。 前回の手順でGitからAndroid2.2のソースを拾ってくるとkernelソースはダウンロードされない。 カーネルソースを取得するには build_test/.repo/manifest.xml に、ソースのダウンロード情報をリビジョンを指定して追加する。 (revisionを指定しないとfroyo指定になって存在しないと言われた。) <project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.32"/> このリビジョン部分は、 http:/
I have not seen this posted anywhere, so I thought I would post it here. This is NOT purely my work, and I do not take credit for it as such. Included in the attached ZIP are the following files: boot_info - prints information about the boot.img passed to it, including the base address and ramdisk address. This tool prints out everything needed to repack the boot.img correctly. split_boot - More c
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く