Python-forensics-mobile
Pythonフォレンジック-モバイルフォレンジック
ハードディスクなどの標準的なコンピューターハードウェアのフォレンジック調査と分析は、安定した分野に発展し、非標準のハードウェアまたは一時的な証拠を分析する技術の支援を受けています。
スマートフォンはデジタル調査でますます使用されていますが、依然として非標準と見なされています。
法医学分析
フォレンジック調査では、スマートフォンからの着信やダイヤル番号などのデータを検索します。 テキストメッセージ、写真、またはその他の犯罪の証拠を含めることができます。 ほとんどのスマートフォンには、パスワードまたは英数字を使用した画面ロック機能があります。
ここでは、Pythonが画面ロックパスワードを解読してスマートフォンからデータを取得する方法を示す例を示します。
手動試験
Androidは、PIN番号または英数字パスワードによるパスワードロックをサポートしています。 両方のパスフレーズの制限は、4〜16桁の数字または文字である必要があります。 スマートフォンのパスワードは、Androidシステムの /data/system にある password.key という特別なファイルに保存されます。
Androidは、パスワードのソルトSHA1ハッシュサムとMD5ハッシュサムを保存します。 これらのパスワードは、次のコードで処理できます。
public byte[] passwordToHash(String password) {
if (password == null) {
return null;
}
String algo = null;
byte[] hashed = null;
try {
byte[] saltedPassword = (password + getSalt()).getBytes();
byte[] sha1 = MessageDigest.getInstance(algo = "SHA-1").digest(saltedPassword);
byte[] md5 = MessageDigest.getInstance(algo = "MD5").digest(saltedPassword);
hashed = (toHex(sha1) + toHex(md5)).getBytes();
} catch (NoSuchAlgorithmException e) {
Log.w(TAG, "Failed to encode string because of missing algorithm: " + algo);
}
return hashed;
}
ハッシュされたパスワードは* saltファイル*に保存されているため、辞書攻撃*を使用してパスワードを解読することはできません。 この *salt は、64ビットのランダムな整数の16進表現の文字列です。 Rooted Smartphone または JTAG Adapter を使用すると、 salt に簡単にアクセスできます。
根ざしたスマートフォン
ファイル /data/system/password.key のダンプは、SQLiteデータベースの lockscreen.password_salt キーの下に保存されます。 settings.db の下に、パスワードが保存され、次のスクリーンショットで値が明確に表示されます。
JTAGアダプター
JTAG(ジョイントテストアクショングループ)アダプターと呼ばれる特別なハードウェアを使用して、 salt にアクセスできます。 同様に、 Riff-Box または JIG-Adapter も同じ機能に使用できます。
Riff-boxから取得した情報を使用して、暗号化されたデータの位置、つまり salt を見つけることができます。 以下はルールです-
- 関連する文字列「lockscreen.password_salt」を検索します。
- バイトは、ソルトの実際の幅、つまり*長さ*を表します。
- これは、スマートフォンの保存されたパスワード/ピンを取得するために実際に検索される長さです。
これらのルールセットは、適切なソルトデータの取得に役立ちます。