ターゲット端末のroot権限のシェルを奪取している状態であれば、ログの消去・改ざんを行うことが可能となります。
今回は、 以下3つの方法で Linux (Metasploitable) のログを消去・改ざんしていきます。
・ログファイル自体を削除する
・ログファイルの中身をクリアする
・コマンド履歴を残さない設定に変更する
前提として、ターゲット端末のシェルを奪取している状態にします。
前回の記事でシェルを奪取する方法を紹介しています。
ログファイル自体を削除する
ログファイル自体を削除することで攻撃の証跡も消すことができます。
なお、Linux の場合は /var/log ディレクトリにログファイルが格納されます。実際に見てみましょう。
ls /var/log
apache2
apparmor
apt
auth.log
boot
btmp
btmp.1
daemon.log
debug
dist-upgrade
dmesg
dmesg.0
dpkg.log
dpkg.log.1
fsck
installer
kern.log
lastlog
lpr.log
mail.err
mail.info
mail.log
mail.warn
messages
mysql
news
postgresql
proftpd
samba
syslog
syslog.0
tomcat5.5
udev
user.log
vsftpd.log
wtmp
wtmp.1
上記のように多くのログが格納されていることがわかります。
ファイルの消去と言うと、「rm」コマンドでの削除が思い浮かびますが、これはディレクトリ上に見えなくなるのみでストレージ上には残っています。
そのため、ファイルの中身をランダムな情報に書き換えた後にゼロで上書きした上でファイルを削除することで、はじめて攻撃の証跡を消すことができたと言えます。
この作業は「shred」コマンドを実行することで実現することができます。コマンド構文は以下になります。
shred -n 3 -zu /var/log/messages
「-n 3」で3回ランダムな情報を書き込みます。
「-z」でゼロを書き込み、「u」でファイルを消去しています。
このコマンドを実行すると、中身を書き換えた状態でファイルを削除できます。
ログファイルの中身をクリアする
次は、ファイルの中身だけをクリアし、ファイル自体は残しておく方法を紹介します。
先程の方法ではファイル自体を削除しているため、削除されているという事実から攻撃されたことがばれてしまうかもしれません。
この方法では中身がクリアされるだけなので、比較的ばれにくいと言えるかと思います。
以下のコマンドを実行することで、ファイルの中身をクリアできます。
(何もないデータをリダイレクトしています)
> ファイル名
今回対象のログファイルは「daemon.log」です。
先に Metasploitable で daemon.log の中身を確認します。
msfadmin@metasploitable:/var/log$ tail /var/log/daemon.log
Mar 21 15:22:04 metasploitable named[4085]: listening on IPv4 interface eth0, 10.0.0.104#53
Mar 21 15:22:04 metasploitable named[4085]: no longer listening on 10.0.0.5#53
Mar 21 15:25:58 metasploitable dhclient: DHCPREQUEST of <null address> on eth0 to 10.0.0.100 port 67
Mar 21 15:26:01 metasploitable dhclient: DHCPREQUEST of <null address> on eth0 to 10.0.0.100 port 67
Mar 21 15:26:04 metasploitable named[4085]: listening on IPv4 interface eth0, 10.0.0.5#53
Mar 21 15:26:04 metasploitable named[4085]: no longer listening on 10.0.0.104#53
Mar 21 15:26:04 metasploitable ntpdate[12509]: can't find host ntp.ubuntu.com
Mar 21 15:26:04 metasploitable ntpdate[12509]: no servers can be used, exiting
Mar 21 15:26:09 metasploitable dhclient: DHCPREQUEST of <null address> on eth0 to 10.0.0.100 port 67
Mar 21 15:26:40 metasploitable last message repeated 3 times
msfadmin@metasploitable:/var/log$
それでは中身をクリアするコマンドを、Kali で実行します。
> /var/log/daemon.log
Metasploitable で再度ファイルの中身を確認してみると、中身がクリアされていました。
msfadmin@metasploitable:/var/log$ tail /var/log/daemon.log
msfadmin@metasploitable:/var/log$
コマンド履歴を残さない設定に変更する
いくらファイルを削除したり中身をクリアしても、そのコマンド履歴から攻撃がばれてしまうかもしれません。
そのため、そのコマンド履歴を消去するアプローチを取ります。
コマンド履歴は「history」コマンドで確認できます。
msfadmin@metasploitable:/var/log$ history
1 cd /var/log
2 ls -la
3 ls
4 shred -n -3 -zu messages
5 shred -n 3 -zu messages
6 ls
7 last /var/log/wtmp
8 last /var/log/wtmp
9 cat /var/log/daemon.log
10 tail /var/log/daemon.log
11 tail /var/log/daemon.log
12 tail /var/log/daemon.log
13 > /var/log/daemon.log
14 tail /var/log/daemon.log
15 ls /var/log
16 tail ~/.bash_history~/
17 tail ~/.bash_history
18 tail ~/.bash_history
19 tail ~/.bash_history
20 tail ~/.bash_history
21 tail ~/.bash_history
22 cat ~/.bash_history
23 tail ~/.bash_history
24 history
msfadmin@metasploitable:/var/log$
この履歴を保存する上限値をゼロにすることで、コマンド履歴を残さないようにすることができます。
コマンド履歴の上限値は環境変数 $HISTSIZE で設定できるため、この値を0にします。
Kali でシェルを奪取した状態で $HISTSIZE の値を変更していこうと思います。まずは $HISTSIZE の値を確認します。
echo $HISTSIZE
しかし、、奪取したシェルでは環境変数を確認できませんでした。
設定変更の「export」コマンドを実行すると値がセットされるのですが、ターゲット端末には反映されませんでした。
export HISTSIZE=0
実際に Metasploitable 側で history を実行してみても、コマンド履歴が記録されていました。
上記のコマンドを Metasploitable 側で実施すると、環境変数を0にセットすることができ、history コマンドを実行してもコマンド履歴は表示されない状態となりました。
ただ、Kali で奪取したシェル上で環境変数の変更は行えず、コマンド履歴のクリアは行ない状態です。
対処については現在思案中です。。
もし本ブログで紹介したモジュールで奪取したシェル上で環境変数を設定する方法があれば、Twitter上でご教示いただけますと幸いです。
本ブログで紹介しているモジュールは以下の2種です。
「exploit/unix/irc/unreal_ircd_3281_backdoor」
「exploit/unix/ftp/vsftpd_234_backdoor」
今回は以上となります。
くどり
この記事は「ハッキング・ラボのつくりかた 第6章 」をベースに作成しています。購入リンクは以下です。
※Amazonアソシエイトを使用しています。
コメント