前回はHydraによる攻撃の話でしたが、今回はそのHydraから攻撃された守備隊側の話。
守備隊の戦いぶり(?)を守備側のログで振り返ってみましょう。
Journalctl コマンド
まずは戦闘経過(ログ)を表示するコマンド ” journalctl ” の使い方について。
普通に ” journalctl ” コマンドでは、貯めているログを全て吐き出します。
journalctl
こんな感じ。
これが何十ページもある膨大な量なので、様々なオプションを使ってフィルターをかけ絞り込みます。
journalctlのオプション
時間で区切る
–since 又は -S
特定の時刻から後の記録を表示する。
–since=”00-00-00 00:00:00″
-S “00-00-00 00:00:00”
–until 又は -U
特定の時刻より前の記録を表示する。
–until=”00-00-00 00:00:00″
-U “00-00-00 00:00:00”
-b
-b :今回の起動時から表示:(引数をつければ、 -1 :前回、 -2 :前々回 など遡れます)
-f
-f :最新分(最新10行分)から未来分を順次表示:Ctrl+Cで離脱
* 今回は同じ攻撃を何回も反復して記録していますので、攻撃側の記録と守備側の記録で時間的なズレが生じている場合があります。
表示順の変更
-r
-r :逆順(新しい順)
-e
-e :最終ページから表示(表示は正順)
検索方法
–grep “検索文字列”
–grep “文字列” :特定の文字列を検索
–no-pager | grep “検索文字列”
–no-pager | grep “文字列” :特定の文字列検索、上記よりもこちらの方が詳しく表示されます。
-p
-p 数字又は下記の文字列 :プライオリティ別の検索
0 | emerg |
1 | alert |
2 | crit |
3 | err |
4 | warning |
5 | notice |
6 | info |
7 | debug |
情報量
-x
-x :メッセージカタログから追加情報を取得して表示
守備隊のログ解析
それではラズパイ5に ” hydra ” で攻撃された、ラズパイ4B守備隊のログを見てみましょう。
ログ表示
ログを呼び出すコマンドは以下の通り。
守備の担当はsshdサーバーなので ‘sshd’ で検索し、その挙動を表示します。
journalctl –no-pager -S “YY-MM-DD HH:MM:SS” | grep ‘sshd’
“YY-MM-DD HH:MM:SS” には攻撃開始の日時を入れます。
攻撃の状況
まず攻撃側(192.168.11.15)から16個のポート番号がランダムに選ばれて、同時に接続を試みています。
鍵を開ける隊員として選ばれたのは以下の16名(16ポート番号)です。
32770 | 32772 | 32774 | 32778 |
32790 | 32796 | 32810 | 32822 |
32828 | 32834 | 60964 | 60970 |
60972 | 60974 | 60976 | 60998 |
そしてまず最初にアンダーラインの2人が門前払いを食らいました。
守備隊(SSHサーバー)側のデフォルト設定では、接続しに来た人々に対して、
- 最初の10人は受付する。
- 11人目からは30%の確率で弾く。(逆に言うと70%は受付する)
- 最大数は100人までとする。
となっています。
最初16人が接続に来たとすると、最初の10人は受付されます。残りの6人は30%の確率で門前払いとなりますので2人が門前払いされ、合計14人が接続トライアルを始めています。
この14人がそれぞれ6回ずつ試行した後(つまり合計84回試行)、全員が接続回数オーバーで失格となっています。
第2次攻撃
そしてその27秒後、また16人(ポート番号は全部新規更新済み)で同じ攻撃を行います。
やはり16人のうち2人が最初に門前払いされました。
残った14人が再度攻撃を始めます。
攻撃成功
そして2巡目の攻撃で100試行目に到達。当たりパスワードを引き当てました。
めでたく当たりを引いたのは、ポート番号56836氏でした。
まとめ
journalctlによるログの見方と、ログ解析によるHydraからの攻撃経過の報告をしました。
hydraはデフォルトでは多数同時接続を繰り返すことが分かりました。
次回は守備隊側の反省会です。
コメント