Kali LinuxにOpenVASを入れてみる

 結論として現状使い物にはならない。個人レベルで遊ぶにはまあいいかも。

 

 仮想マシン上のKali Linux(以下,単にKali)に,オープンソース脆弱性スキャナOpenVASをインストールして,適当なところをスキャンしてレポートを吐いてみるまでの手順メモ。

 

 まず,Kali上で sudo apt install openvas して OpenVAS をインストールする。

 インストールが終わったら, gvm-setup して初期設定とプラグインのダウンロード・インストール等が終わるまで待つ。このとき,最初の方で Admin のパスワードが表示されるので要注意。最後にも一応出るけど,まれにまともに表示しないことがある。

 セットアップが終わったら, gvm-start でスキャナのデーモンを起動。勝手にブラウザが立ち上がってログイン画面を開いてくれるので(初回はSSL証明書が不適切だつってエラー吐くので許可して続ける), admin のアカウントでログインする

 タスクウィザードで適当な端末のアドレスを指定してスキャンする。しばらく待つとレポートが出来上がる。

 Result からレポートを参照する。レポートは XML や PDF ,テキストファイル等でダウンロードできる。

 

 ざっと一通り試すだけなら上記の通り。ただし,アカウント周りで不整合を起こすのか, admin のパスワードをくれなかったりしたことがある。理由は不明。

 PDF でレポートをダウンロードできない不具合がある。ダウンロードしようとすると 0byte のファイルができてくる。テキストファイル等ではちゃんと落ちてくる。 Greenbone のフォーラムなんかでも既知なので,そのうち治るかもしれない。

 あと,CVEのデータが参照できない。レポートには脆弱性の概要が出るんだけど,詳細を見ようとしたらデータベースが無いみたいなエラーで情報を参照できない。レポートには CVE の番号等は出ているので,別途ググればだいたいわかるんだけど,その場で参照できないのはすごく不便。これも Greenbone のフォーラムでは既知。治し方が紹介されていたけどウチの環境だと治らなかった。

 

 脆弱性スキャンをして,ざっくり眺めるにはいいかもしれない。

 スキャンして手元で( Web ブラウザ経由で)脆弱性の数や概要を眺める分にはいいけど,詳細情報が直で得られないので,わかってる人が自分の手元で使うだけなら使えるかなあってところか。
 それでも CVE を直で参照できないので不便は残る。
 っつことで,わかってる人が条件を踏まえて小規模に内輪で使う分には使えなくはないといった触感。
 レポートがアレな感じなので規模が大きくなると読むだけで手間がかかりすぎると思う。
 ちょっと規模が大きくなったり,引継ぎが発生する可能性があるなら Nessus 買ったほうがはるかにいい。
 Nessus のほうが使い勝手もレポートの出方もいい。

マザーボードが死んだパソコンからHDDを抜いて仮想化(Physical to Virtual)するまで

 パソコンを新調したら旧パソコンが期限を損ねて起動しなくなったので,この際旧パソコンのOS環境を仮想化して取り込んだ。

 作業そのものは6月にやったんだけど,当時の作業メモが出てきたのと,こっちに記録をしてなかったので,覚えているうちに記録しておくことにする。

 仮想化には Oracle VirtualBOX を使う。旧環境はWindows10,新環境はWindows11。必要なのは VirtualBOX なので,Linux上の VirtualBOX で仮想化するのも手順は大差ない。今回は Windows11 のパソコンに買い替えたら Windows10 のパソコンが拗ねてこじれたのでこうなった。

 旧パソコンから取り外した SATA HDD を認識させるために,SATA-USB変換のアダプタが必要。

 たとえばこんなの。https://pc.watch.impress.co.jp/docs/news/421552.html

 

作業手順

  1. 仮想マシン上でUbuntuをインストール。sambaを追加でインストールして,ファイルアプリ上でWindowsファイル共有ができるよう設定。ホスト上のドライブに接続。
     参考:https://bsj-k.com/ubuntu-access-win-common/
    以下,この環境を「クライアント」として記述。
  2. SATA-USB変換で,旧環境のシステムドライブをホストのWindows11環境に,USB大容量ドライブとして認識させる。
  3. VirtualVoxのUSBデバイスフィルタで,該当のUSBデバイスをクライアントに接続できるよう設定。
  4. クライアントを再起動して,USBドライブを刺しなおすとクライアント側で認識する。
  5. クライアント側の「ファイル」アプリでWindowsファイル共有のドライブを開き,ファイルパスを確認して,コマンド窓でcdして共有ドライブに移動しておく。
  6. ddコマンドでUSB接続したドライブを書き出す。以下のコマンドで,USB接続したHDDの内容をそのまま自分がいるディレクトリ(ここでは先に移動しておいたWindowsファイル共有先)にダンプする。
     dd if=sdb bs=32M > Win10.img
  7. 書き出しが終わったらクライアントに用は無いのでとりあえずシャットダウン。USBドライブも外して構わない。
  8. 6.でダンプした生のディスクイメージをVirtualBox形式に変換。コマンドプロンプトを開いて,ダンプした生ディスクイメージのあるところに移動してから以下のコマンドを使う。
     "C:\program files\Oracle\VirtualBox\vboxmanage" convertfromraw Win10.img Win10.vdi
  9. VirtualBOX仮想マシンを新規で作り,8.の手順で作ったvdiファイルを「既存ドライブ」として使うよう設定。
     メモリ16GB,CPU4個割り当てた。
  10. 起動。初回はデバイスの設定で時間がかかる。
  11. ライセンス認証。仮想マシンのWin10上で「設定」→「更新とセキュリティ」→「ライセンス認証」
  12. トラブルシューティングからライセンスを再認証。「トラブルシューティング」からWindowsアカウントでログインして,「このデバイス上のハードウェアを最近変更しました」を選択。
  13. 仮想マシンのWin10のPC名をもとにライセンス認証するPCを選択,アクティブ化。
  14. 仮想化したWin10環境にVirtualBox Guest Additionsをインストール。
    参考:https://pc-karuma.net/virtualbox-install-guest-additions/

 以上の手順で,旧パソコンのWindows10環境を仮想化して,新パソコン上の VirtualBOX 内で起動できるようになった。

 

 あとで知ったんだけどもっと簡単そうなやり方もあるようで('A`)

datatechlog.com

Unihertz TITANでSMARTalkを使う(GCMタイムアウトをなんとかしてプッシュ通知を受け取る)

やりたいこと

 SMARTalkを実用水準に持っていきたい。あわよくば自宅の@Niftyフォン-Cの番号も持ち歩きたい。

現状

  • 自宅の@Niftyフォン-Cは光回線にぶら下げたWi-Fi経由でGalaxy S2(Android2.3.6)にインストールしてあったSipdroidでレジストして使っている。発着信共に問題なし。
  • Blackberry KEY2にSipdroidを入れてSMARTalkにレジストして使っている。KEY2のマイクの音量が小さすぎて,探し回ったところSipdroidのマイクブーストを最大にすればなんとか音を拾ってくれた。
  • KEY2でレジストしているSMARTalkで着信しない。レジストして10分くらいは着信できるが,スリープに入ると着信しなくなる。復帰しても着信できないまま。

 ということで,最近KEY2のキーボードにも不調が出てきたことなので,予備機として玩具にしていたUnihertz TITANでSMARTalkを使い,あわよくば自宅の@Niftyフォン-Cの番号もまとめて一台にできないかと画策したところ,なかなかうまくいかなかったのでメモを残しておく。
 まずはTITANにSMARTalk標準アプリを入れて設定を行い,ウッキウキで実地試験に臨んだ。

発生した問題

 Unihertz TITANがスリープ状態になると数分~十数分の間のどこかのタイミングでプッシュ通知を受け取れなくなり,SMARTalkの純正アプリで着信ができなくなる。スリープから復帰しても着信できないままになっている。
 この現象自体はBlackberry KEY2でも起きていたのだが,マイクの不調(?)のせいでSMARTalk標準アプリが使えずSipdroidを使っていたので,SMARTalk側が15分くらいでSIPのセッションを切って(プッシュ通知のみにして)留守電に切り替わっているのではないかと思っていた。
 対してTITANではSMARTalk標準アプリならプッシュ通知を受け取れて着信できるだろうと思っていたが,KEY2でSipdroidを使っていたときと同じ現象がおきた。
 さらには着信方式を「通常(セッションを維持したまま着信を待つ)」にしても状況は改善されなかった。
 実際にはどうやらAndroid6から実装されたDozeモードが悪さをしている可能性と,プッシュ通知で使われているGCMがタイムアウトしている可能性,あるいはその両方が考えられる。
 TITANは(この記事の時点で)最新のネットワークアップデートでAndroid10にしてある。

試行したこと

 TITANの省電力機能を片っ端から切っていった。

  1. 設定→アプリと通知→詳細設定→特別なアプリアクセス→電池の最適化 ですべてのアプリを表示させ,SMARTalkが「電池の最適化の使用不可」になっていることを確認した。
  2. 設定→スマートアシスト→アプリ制限 でアプリ制限をオフにした。
  3. 設定→電池→バッテリーセーバー→スケジュールの設定 でスケジュールなしを選択,フル充電で無効をオンにした。
  4. 設定→電池→バッテリーマネージャ でバッテリーマネージャの使用をオフにした。
  5. SMARTalkアプリ側で「スリープ中にWi-Fiを切らない」設定を行った。

参考:

www2.kokoro-navi.com

 これで(おそらく)省電力機能からは解放されたと思われる・・・が,改善してくれなかった。そこで,省電力回りでできることはもう無いと判断。
 スリープモード(Dozeモード)でアプリが切られていなくてもプッシュ通知が取れない,つまりGCMセッションが切れているのではないかと推測。

  • Google Playから「Heartbeat Fixer for GCM」をインストール,上記省電力から除外する手順を踏んで省電力で落ちないように設定。
  • Heartbeat Fixer for GCM の設定で10分毎に設定

play.google.com

 この状態で一時間半放置し,Dozeモードに入っているはずの時間帯で自宅回線から発信し,SMARTalkで着信できることを確認した。

参考:

qiita.com

 ここまではWi-Fi環境での実験だったので,3G(4G)回線でも通用するか試してみる。3G回線はDoCoMoMVNO回線を使っているIIJmioのデータ通信専用格安SIM。これでうまく着信できれば実用上問題はなくなる。
 Wi-Fiを切って一時間半待ち,その後自宅回線から発信して着信を確認。通話品質も問題ない。これでようやくTITANでSMARTalkを持ち運べる。

自宅で使っている番号でも着信したい

 ここまでの手順をSipdroidでも試行して,@Niftyフォンでも発着信できるようになれば,自宅で使っている番号とSMARTalkの番号の両方を一台のすまほに入れられる。ただし,Sipdroidは電話帳機能がなく,SMARTalkを標準の電話アプリの代わりに使っていたらSipdroidを選択して発信できないので,標準の電話アプリを試して発信番号を選択できるかどうかを確認しておきたい。まあ,自宅の番号として使ってきたものを無理やりすまほに突っ込んで持ち歩く必要まではないので,だめならだめでかまわない。
 現在はAndroid2.3.6のGalaxy S2に入れていたSipdroidで@Niftyフォンを使っているため,スリープモードでタスクが死ぬこともなく安定して着信できている。これを一台にまとめて,自宅にいるときは自宅用番号も受けられるようにできれば有難い。
 とはいえそもそも@Niftyフォンは本来自社の回線網(有線)でしか対応していないのを我が家ではWi-Fi環境下のSIPクライアントでつないでいるわけで,そもそもスマートフォンで扱うようにはできていない。

実験1:IIJmioの回線で待ち受けてみる

 Sipdroidに自宅で使っている@NiftyフォンのSIPサーバを登録,別端末でSMARTalkのSIPサーバに登録。上記の省電力機能から除外する設定を一通りSipdroidにも設定しておいて,IIJmioの回線で着信と通話ができることを確認した後,Dozeモードに入ったあたりでSMARTalkから発信。こちらは着信せず。Sipdroidはプッシュ通知を使っていないのでそりゃそうだといったところ。TITANの省電力からは逃げられないのか。

実験2:Wi-Fi環境で待ち受けてみる(本命)

 ということで,Wi-Fiにつないで@Niftyフォンに着信することを確認して,一時間半放置してみる。着信せず。
 どうやらSipdroidは様々な除外設定をしてもDozeモード中に寝てしまうのだろうか。そこで,Doze Busterというアプリを使ってDozeモードに入らないようにしてみる。

play.google.com

 画面を定期的に一瞬点灯させる機能をオンにしてみたが,どうも機能していない。
 ということで画面点灯機能を使わずに試してみたんだけど着信せず。ログを確認してもDozeモードには入っていないので,これはSipdroidとTITANとの相性問題かと思われる。
 自宅番号をTITANに入れて着信させるため,Blackberry KEY2にインストールしたSipdroidでSMARTalkにレジストして,TITANの自宅番号側から発信してみたところ,Doze Busterが生きていれば着信できたので,SipdroidはAndroid8.1ではDoze Busterが生きていれば寝ない。他のSIPクライアントは試していない。
 なお,TITANではAndroid標準の電話アプリからSIPの設定項目自体が消えていた。

結論

 Wi-Fi接続と3G接続(IIJmio)共に以下のような結果となった。

  • Unihertz TITANでSMARTalkを使うためには,各種省電力機能のオフや対象除外の設定と共に,GCMタイムアウトしないように何らかの手当てが必要。
  • GCMタイムアウトを防げれば通常のプッシュ通知着信ができるようになる。これはWi-Fiでも同じことがおきたので,MVNO回線じゃなくても起きると思われる。
  • TITANとSipdroidの相性が悪いのか,スリープに入るとSipdroidで着信できなくなる。

 当面は自宅回線はGalaxy S2のままで誤魔化して,持ち出しは諦める。SMARTalkはUnihertz TITANで持ち出せる。自宅番号の維持にはIP電話対応ルータを入手するのが確実だな。今でも売ってるの?光電話対応ルータあたりでもあればいいんだが。
 入手に難があるなら今のうちにAndroid5.xまでの端末を用意しておいて,Dozeモードの呪縛から逃れる算段をつけておく必要がありそうだ。あるいは,充電中はDozeモードに入らないということなので,自宅番号を着信したい端末は常に充電ケーブルをつないだままにしておいて固定電話のように扱うか。
 (11/27追記)VoIP対応ルータはYAMAHAにある。

network.yamaha.com

 AmazonでもVoIPアダプタはけっこう並んでいた。

www.amazon.co.jp

生存報告

 ギリギリ生きています。

 心臓の手術が2015/12/1だったかと思うのであれから5年半といったところ。冠動脈バイパス手術で左腕の動脈を使って血流を変えたので,広義の改造人間ですよ。

 仮面ライダー THE FIRSTやTHE NEXTの改造人間みたいに定期的にメンテナンスしないと死んじゃうタイプですが。

 そんなもんなので高血糖やらなんやらで入退院を繰り返しつつ,一昨年には心不全での入院もあり,躁鬱に端を発する睡眠障害などでまともな社会生活からは身を引いた状態。

 循環器系の病気が響いて腎臓もヘタってきていて,今もやんわり入院加療を勧められてはいるものの,なるべく自宅にいたいという要望をギリギリ押し通している感じではありながら,なんとか50歳までやってきました。

 腎臓は一線を超えると回復しない臓器なので,いずれは透析でしょうね。それまでの時間を伸ばしている感じ。

 

 おそらくもう戻ることはないだろうと思いつつ,いかにポックリ逝くかを考えています。

 最早健康寿命を終えつつあるというかギリギリ終わったかといったところなので,さあてどうしたものか。QOL低め。楽しめることがほとんどないからねえ。

 これ100年前ならもう死んでる状態ですし。

 残った時間の使い方,けっこう難しい。できることが少ないので。

 できること何が残ってるかな。

2018年04月21日のツイートまとめ

2018年04月08日のツイートまとめ

2018年03月07日のツイートまとめ