以前、rootkit検知ツール chkrootkit でルートキット Suckit を誤検出する件を修正しました。
chkrootkit のSuckit誤検知の修正 パソコン鳥のブログ
ただし、CentOS での対応だったので、今回、Ubuntu での chkrootkit の修正を説明します。
修正コードは以下になります。
### Suckit
で始まる箇所を下記のように修正します。赤字の箇所が修正/追加箇所です。
2015/3/3:コメント欄で指摘いただいたミスを修正しました。
if ! [ “`md5sum ...の「!」を追加しました。
/usr/sbin/chkrootkit
### Suckit if [ -f ${ROOTDIR}sbin/init ]; then if [ "${QUIET}" != "t" ];then printn "Searching for Suckit rootkit... "; fi if [ ${SYSTEM} != "HP-UX" ] && ( ${strings} ${ROOTDIR}sbin/init | ${egrep} 'HOME=' || \ cat ${ROOTDIR}/proc/1/maps | ${egrep} "init." ) >/dev/null 2>&1 then if ! [ "`md5sum ${ROOTDIR}sbin/init | cut -d ' ' -f 1`" = "`grep 'sbin/init
Ubuntu版 では次の2点を修正しています。
1つ目は、/sbin/init に文字列 ‘HOME’ が現れないかのチェックで誤検出していた箇所の修正です。
CentOS では問題無かったのですが、Ubuntu では次の文字列が検出されて誤検出していました。
XDG_CACHE_HOME XDG_CONFIG_HOME
そこで、次のように、’HOME=’ と検出条件を厳しくして、誤検出を回避しています。
if [ ${SYSTEM} != "HP-UX" ] && ( ${strings} ${ROOTDIR}sbin/init | ${egrep} 'HOME=' || \
これは、下記での修正案を反映しました。
[Bug 454566] Re: False positive for SucKit
なお、現時点で Ubuntu の apt-get でインストールされる chkrootkit はバージョン 0.49 ですが、ここ で公開されている最新版の 0.50 では、これは既に反映されています。
2つ目は、「chkrootkit のSuckit誤検知の修正」での場合と同様、 upstartパッケージの更新で init が置き換わる度に誤検出していた件を修正しています。
init の改ざんチェックで、Ubuntu用にコードを下記のように修正しています。
2015/3/3:コメント欄で指摘いただいたミスを修正しました。
if ! [ “`md5sum ...の「!」を追加しました。
if ! [ "`md5sum ${ROOTDIR}sbin/init | cut -d ' ' -f 1`" = "`grep 'sbin/init
これで、Ubuntu でもルートキット Suckit を誤検出しないようになります。
参考
[Bug 454566] Re: False positive for SucKit
linux – Can dpkg verify files from an installed package? – Server Fault
/var/lib/dpkg/info/upstart.md5sums | cut -d ' ' -f 1`" ] then echo "Warning: ${ROOTDIR}sbin/init INFECTED" fi else if [ -d ${ROOTDIR}/dev/.golf ]; then echo "Warning: Suspect directory ${ROOTDIR}dev/.golf" else if [ "${QUIET}" != "t" ]; then echo "nothing found"; fi fi fi fi
Ubuntu版 では次の2点を修正しています。
1つ目は、/sbin/init に文字列 ‘HOME’ が現れないかのチェックで誤検出していた箇所の修正です。
CentOS では問題無かったのですが、Ubuntu では次の文字列が検出されて誤検出していました。
そこで、次のように、’HOME=’ と検出条件を厳しくして、誤検出を回避しています。
これは、下記での修正案を反映しました。
[Bug 454566] Re: False positive for SucKit
なお、現時点で Ubuntu の apt-get でインストールされる chkrootkit はバージョン 0.49 ですが、ここ で公開されている最新版の 0.50 では、これは既に反映されています。
2つ目は、「chkrootkit のSuckit誤検知の修正」での場合と同様、 upstartパッケージの更新で init が置き換わる度に誤検出していた件を修正しています。
init の改ざんチェックで、Ubuntu用にコードを下記のように修正しています。
2015/3/3:コメント欄で指摘いただいたミスを修正しました。
if ! [ “`md5sum ...の「!」を追加しました。
これで、Ubuntu でもルートキット Suckit を誤検出しないようになります。
参考
[Bug 454566] Re: False positive for SucKit
linux – Can dpkg verify files from an installed package? – Server Fault
/var/lib/dpkg/info/upstart.md5sums | cut -d ' ' -f 1`" ]
これで、Ubuntu でもルートキット Suckit を誤検出しないようになります。
参考
[Bug 454566] Re: False positive for SucKit
linux – Can dpkg verify files from an installed package? – Server Fault
/var/lib/dpkg/info/upstart.md5sums | cut -d ‘ ‘ -f 1`” ] then echo “Warning: ${ROOTDIR}sbin/init INFECTED” fi else if [ -d ${ROOTDIR}/dev/.golf ]; then echo “Warning: Suspect directory ${ROOTDIR}dev/.golf” else if [ “${QUIET}” != “t” ]; then echo “nothing found”; fi fi fi fi
Ubuntu版 では次の2点を修正しています。
1つ目は、/sbin/init に文字列 ‘HOME’ が現れないかのチェックで誤検出していた箇所の修正です。
CentOS では問題無かったのですが、Ubuntu では次の文字列が検出されて誤検出していました。
そこで、次のように、’HOME=’ と検出条件を厳しくして、誤検出を回避しています。
これは、下記での修正案を反映しました。
[Bug 454566] Re: False positive for SucKit
なお、現時点で Ubuntu の apt-get でインストールされる chkrootkit はバージョン 0.49 ですが、ここ で公開されている最新版の 0.50 では、これは既に反映されています。
2つ目は、「chkrootkit のSuckit誤検知の修正」での場合と同様、 upstartパッケージの更新で init が置き換わる度に誤検出していた件を修正しています。
init の改ざんチェックで、Ubuntu用にコードを下記のように修正しています。
2015/3/3:コメント欄で指摘いただいたミスを修正しました。
if ! [ “`md5sum ...の「!」を追加しました。
これで、Ubuntu でもルートキット Suckit を誤検出しないようになります。
参考
[Bug 454566] Re: False positive for SucKit
linux – Can dpkg verify files from an installed package? – Server Fault
コメント
この度、raspberry pi の設定で参考にさせていただきました。
そのうえで、気になることがあってコメントさせていただきました。
if [ “`md5sum ${ROOTDIR}sbin/init | cut -d ‘ ‘ -f 1`” = “`grep ‘sbin/init$’ /var/lib/dpkg/info/upstart.md5sums | cut -d ‘ ‘ -f 1`” ]
の箇所なのですが、[] の箇所で = を使われています。しかし、= では、MD5 が正しいときに warning を出してしまわないでしょうか。自分も MD5 を確かめて同じであることを確認し、改ざんがないことを確認したので、本来では
if ! [ 省略 ] とするべきなのではないでしょうか?
以上です。よろしくお願い致します。
仰る通り、if ! [ “`md5sum ...の「!」がありませんでしたので、修正しました。
確認した所、本記事の公開以降に sbin/init の更新は無かったので、幸いにも本件ミスによる影響は無いようです。
御指摘、大変ありがとうございました。