新「ブラッディ・マンデイ」の藤丸が持ってるUSBメモリの作り方 – BackTrack4 final 編

2010年2月12日

カテゴリー: Linux, backtrack — admin @ 1:44 AM

どもです、ブラッディ・マンデイ、シーズン2がマンガもドラマも始まりましたね。個人的にはドラマ版は人が死にすぎなのであまり好きではありません。断然コミック派です。(どうでもいいですねw)

以前に「ブラッディ・マンデイ」の藤丸がもってるUSBメモリの作り方という記事を1年以上前に書きました。質問もたくさんいただきましたが全然返せてなくてすみません。youtubeか何かで実際の作り方を動画にしてくれという要望もありましたので、試みようとしたのですが、BackTrackもOphcrackも新しくなってしまい、仕様が変わったため書いた記事の内容と大きく異なることになりそうでしたのでやめました。それと、2つのLinuxをがっちゃんこするのも結構めんどくさいし若干難しいと思いますので、今回改めてシンプルで簡単な方法を書こうと思います。

まず、ブラッディ・マンデイの藤丸が使っているUSBですが、あれはUSBメモリにUSBブート可能なLinux系OSをつっこんでブートしていると思います。最近で有名なOSはUbuntuやFedoraあたりでしょうか。Knoppixや他にもLiveUSBのLinuxはありますが、特にUbuntuは凄い使い易くて良いですアレ(笑)

ただ今回は、あくまで藤丸に近づくために、実際に構築したサーバのセキュリティをペネトレーションテスト(ハッキングやクラック)するためのOS、BackTrack4というOSをUSBメモリからブートできるようにしてみます。

用意するものは4GB以上のUSBメモリとインターネットにつながったWindows環境です。
USBメモリは1,000円前後で購入できます。

そして、BackTrack4 final をダウンロードします。
dl
BackTrackダウンロードURL

ダウンロードが完了したら、USBメモリをWindowsマシンに差してください。
次に、LinuxLive USB Creator というツールを使って藤丸のUSBメモリを作っていきます。

LinuxLive USB Creator をダウンロードします。
click

LinuxLive USB CreatorダウンロードURL

ダウンロードしたら、LinuxLive USB Creator 2.4.exe を実行して解凍します。
icon

解凍してできたフォルダに入ります。
dir

LiLi USB Creator.exe を実行します。
tool

あとは、インストール先のUSBメモリとダウンロードしたBackTrack4 final のisoを選択して、インストールを実行します。
インストールが完了すると、下記のようなメッセージが出てきます。
comp

これでインストール完了です。とっても簡単!

さて、次は起動するPCのBIOSをUSBメモリをファーストブートに設定して、起動してみてください。
下記は僕のネットブックでの起動画面です。
写真

こんな感じで出来上がりです。

ちなみに今回も、大変お世話になっているatc-500様のブログを参考にしました。

次回があれば、Ubuntu編を書こうかなと思います。それかBackTrack4の藤丸(っぽい)仕様でもつくろうかなと。

それでは、よきハックなライフを送ってくださいませー。

Linux標準コマンドでローレベルフォーマット

2010年1月31日

カテゴリー: Linux, bash — admin @ 5:00 AM

ローレベルフォーマットって物理フォーマットのことなんだけど、厳密にはローレベルフォーマットって個人レベルじゃできないようです。
ここでいうローレベルフォーマットってのは、データを0の値で上書きすることをさします。0で上書きすることによって実質データの完全削除です。

0と1しかないんだから0で書いちゃえばなんもないじゃんってことです!

ってとこで、ローレベルフォーマットってツール使ったりすることが多いですが、最近はUSBやCDからブートできるubuntuとかLinuxがたくさんあるので、Linux標準のddコマンド使っちゃえばできちゃうようです。

参考サイト
http://www.cybernetic-survival.net/dd.htm

ウチのDELLノートちゃんのパーティションキレてるDドライブちゃんとキレイに全消ししたかったので、下記のコマンドを実行してみた。

CODE:
  1. #dd if=/dev/zero of=/dev/sda2

デバイスは環境によってことなるのでその都度確認しないと大変なことになりますよ!
これでウチのDELLノートちゃんは無事にデータが消えやがってくれましたよ。

dd便利すな!

Facebookユーザーを標的にしたメール詐欺に対抗してみた2

2009年11月6日

カテゴリー: Linux, sendmail — admin @ 12:36 AM

前記事にて、特定ドメインからの受信を拒否してみたんだけど、全然メール拒否できてなかった。
そりゃこれだけ手の込んだフィッシングメールなんだから当然だよね。メールヘッダ見たら全然違ったし、しかもドメイン複数あるし偽造されてるしで結局わからんちんだったので、webmaster宛にメールは届いていたので、webmaster宛のメールをすべて拒否することにした。

CODE:
  1. [root@host ~]# vi /etc/aliases
  2. webmaster: root
  3.   ↓に変更
  4. #webmaster: root
  5.  
  6. [root@host ~]# newaliases

うん、ばっちり来なくなった。
そもそもwebmasterとかinfoとかrootとか狙われやすいんだから、デフォルトでオフにしとくべきした。

Facebookユーザーを標的にしたメール詐欺に対抗してみた

2009年10月31日

カテゴリー: Linux, sendmail — admin @ 4:39 PM

最近、フィッシングサイトへの誘導メールがよく来る。なりすましはFacebookである。
ググってみたらどうやら今全世界で流行っているらしいですねー。

#ニュース記事
Facebookユーザーを標的にしたメール詐欺--トロイの木馬「Zeus」で個人情報を盗む

メールのくる間隔としては、1日に2~3通は来るのでかなり迷惑。

ってことで、送信元ドメインごとメール受信を拒否することにした。

ウチはsendmailなので、まず設定ファイルを修正する。

CODE:
  1. [root@host ~]#vi /etc/mail/access
  2. #追記↓
  3. facebookmail.com  REJECT

"[ドメイン名] REJECT" と記述することで、このドメインのメールはすべて受信拒否にする。
次に、アクセスファイルをデータベースに変換します。変換にはsendmailに付属のmakemapコマンドを使用します。
その後、sendmailを再起動すれば設定が反映されます。

CODE:
  1. [root@host ~]# makemap -v hash /etc/mail/access.db </etc/mail/access
  2. [root@host ~]# /etc/rc.d/init.d/sendmail restart

これで指定ドメインのメールが拒否できます。
ちなみに受信したい場合は、"RELAY" を使うことでメールを受信することができるようになります。

フィッシング、こわいよ、フィッシング。

起動スクリプトの作成 /etc/rc.d/init.d/

2009年10月11日

カテゴリー: Linux, bash — admin @ 2:34 AM

bash、面白いよ、bash。

bashを全然使いこなせないので、ちょっと頑張ってもろもろ勉強せなあかんですなと思ったので、まずはいつも手作業で行っていた作業を自動化していくことにした。

ウチのサーバちゃんでは、sambaでファイルサーバも使っているのだが、バックアップもかねて、外部HDDをUSBでつないで、それをsamba内で管理しているディレクトリにマウントして使っている。
このマウント作業を手作業で行っていたため、マシンをリブートした時に、また再度手作業で行わなくてはいけない。毎回これはめんどくさいので、いい加減自動化しようと思ったのがことの経緯であるわけです。

外部HDDはwindowsでも使えるようにNTFSでフォーマットしてあるため、下記のコマンドでいつもマウントしている

CODE:
  1. host# mount.ntfs-3g /dev/sdb1 /home/hiroki/samba/mnt/

このコマンドをサーバが立ち上がった時に自動でブートするようにする。

/etc/rc.d/init.d/ ディレクトリにbashでスクリプトを組む。
startとstopで起動、終了を制御するため、start関数とstop関数を用意する。

CODE:
  1. host# vi /etc/rc.d/init.d/mnt_music

スクリプトの中身

CODE:
  1. #!/bin/bash
  2.  
  3. # chkconfig: 2345 97 97
  4. # description: mnt_music
  5.  
  6. start(){
  7.     if mount.ntfs-3g /dev/sdb1 /home/hiroki/samba/mnt/; then
  8.         echo "mount success!!"
  9.     fi
  10. }
  11. stop(){
  12.     if umount /home/hiroki/samba/mnt/; then
  13.         echo "umount success!!"
  14.     fi
  15. }
  16.  
  17. case "$1" in
  18.     start)
  19.         start;;
  20.     stop)
  21.         stop;;
  22. esac

3行目の "# chkconfig" は、chkconfigに登録できるようにする記述である。
数値部分は、「ランレベル」「起動プライオリティ」「終了プライオリティ」の順である。

スクリプトを実行する。

CODE:
  1. host# /etc/rc.d/init.d/mnt_music start
  2. umount success!!

ランレベル3に、シンボリックリンクを登録する。

CODE:
  1. host# ln -s /etc/rc.d/init.d/mnt_music /etc/rc3.d/S97mnt_music

chkconfigに "mnt_music" を登録し、起動時のブートを有効にする。

CODE:
  1. host# chkconfig --add mnt_music
  2. host# chkconfig mnt_music on

これで、毎回手作業でコマンドを実行することなく、自動でHDDをマウントすることができるようになった。

ディレクトリごとFTPでアップロードしてくれるスクリプト – コマンドラインPHP

2009年8月23日

カテゴリー: Linux, PHP, pear — admin @ 3:17 AM

JavaScriptネタばかりで飽きてきたので、PHPネタでも書いてみる。
最近はまっているのは、webアプリケーションを作るためのPHPではなく、コマンドラインでいろいろできるPHPスクリプトを組むことです。

bashでも良いんだけど、やはり物足りないので、(と言ってもそこまで使いこなしていない・・・。)Pythonという選択肢もあるけど、Pythonわかんないので、PHPを使って、ディレクトリごとFTPでアップロードしてくれるスクリプトを書いてみた。

PEARライブラリを使ったソースコードになっているので、このクラスを使う場合、PEARのインストールが必要になってくる。

まずは、型となる ftp_dir_put.class を定義する。
ファイル名は ftp_dir_put.php で保存。

PHP:
  1. <?php
  2.  
  3. /*****************************************************
  4. *
  5. *  ftp_dir_put.class
  6. *
  7. *  ftpアップロードをディレクトリ単位で実行するクラス
  8. *  Terminal上での実行専用
  9. *
  10. *****************************************************/
  11.  
  12. require_once 'Net/FTP.php';
  13.  
  14. class ftp_dir_put {
  15.  
  16.   /*-------------------------------------
  17.   *  コンストラクタ
  18.   */
  19.   public function ftp_dir_put( $ftp_server, $ftp_user_name, $ftp_user_pass, $remote_dir, $local_dir, $mode ){
  20.     /*-------------------------------------
  21.     *  $target_hostオブジェクトを生成
  22.     */
  23.     $target_host = new Net_FTP( $ftp_server, 21 );
  24.  
  25.     //ftpサーバに接続
  26.     if( $target_host->connect( $ftp_server  ) ){
  27.  
  28.       print $ftp_server.' に接続しました'."\n";
  29.  
  30.       //接続後、ログイン認証
  31.       if( $target_host->login( $ftp_user_name, $ftp_user_pass ) ){
  32.         print $ftp_server.' にログインしました'."\n";
  33.         print $local_dir.' を '.$remote_dir.' にアップロードしています・・・'."\n";
  34.  
  35.         if( $target_host->putRecursive( $local_dir, $remote_dir, $mode ) ){
  36.  
  37.           print 'アップロードが終わりました'."\n";
  38.           if( $target_host->disconnect() ){
  39.             print 'ログアウトしました'."\n";
  40.           }
  41.           else{
  42.             print 'ログアウトに失敗しました'."\n";
  43.           }
  44.         }
  45.         else{
  46.           print 'アップロードに失敗しました'."\n";
  47.           if( $target_host->disconnect() ){
  48.             print 'ログアウトしました'."\n";
  49.           }
  50.           else{
  51.             print 'ログアウトに失敗しました'."\n";
  52.           }
  53.         }
  54.       }
  55.       else{
  56.         print 'ログイン失敗しました'."\n";
  57.       }
  58.     }
  59.     else{
  60.       print $ftp_server.' に接続できません'."\n";
  61.     }
  62.   }
  63. }
  64.  
  65. ?>

そして、この ftp_dir_put.class を newして実行するファイルを作成
ファイル名は、test_host.php とかで保存。

PHP:
  1. <?php
  2.  
  3. require_once 'ftp_dir_put.php';
  4.  
  5. function init(){
  6.  
  7.   /*-------------------------------------
  8.   *  プロパティセット
  9.   */
  10.   $ftp_server = 'host_name';       //ftpサーバーアドレス
  11.   $ftp_user_name = 'user_name';    //ユーザー名
  12.   $ftp_user_pass = 'user_pass';    //パスワード
  13.   $remote_dir = '/';               //サーバー側ディレクトリパス
  14.   $local_dir = '/var/www/html/';   //ローカル側ディレクトリパス
  15.   $mode = true;                    //オーバーライド
  16.  
  17.   /*-------------------------------------
  18.   *  実行オブジェクト
  19.   */
  20.   $test_init = new ftp_dir_put(
  21.     $ftp_server,
  22.     $ftp_user_name,
  23.     $ftp_user_pass,
  24.     $remote_dir,
  25.     $local_dir,
  26.     $mode
  27.   );
  28.  
  29. }
  30.  
  31. init();
  32.  
  33. ?>

これで、あとはコマンドラインにて、この test_host.php を実行

CODE:
  1. [user@host ~]$ php test_host.php

で、あとは勝手にアップロードしてくれる。
PEAR、凄いよ、PEAR。

yumで、proftpd インストール – CentOS

2009年8月22日

カテゴリー: Linux, proftpd — admin @ 4:53 PM

SCPを使ってファイルのアップロードを行っていたが、WinSCPの使い勝手が悪いので、proftpdを突っ込んで、FTPサーバを作ることにした。やっぱりNextFTPを使いたい。

OSはCentOS、Fedora系は全般的にやり方は同じ。
ソースからのコンパイルインストールではなく、yumでインストールすることにする。

proftpdを直接起動するのではなく、xinetd経由での起動にする。

CODE:
  1. [root@host ~]# rpm -q proftpd
  2. パッケージ proftpd はインストールされていません。
  3. [root@host ~]# yum install proftpd
  4.  
  5. [root@host ~]# rpm -q xinetd
  6. パッケージ xinetd はインストールされていません。
  7. [root@host ~]# yum install xinetd
  8.  
  9. [root@host ~]# vi /etc/proftpd.conf
  10.  
  11. ▽変更箇所
  12.  
  13. #ServerType                     standalone
  14. ServerType                      inetd
  15.  
  16. #DefaultRoot                    ~ !adm
  17. DefaultRoot                     ~/public_html !wheel
  18.  
  19.  
  20. [root@host ~]# vi /etc/xinetd.d/xproftpd
  21.  
  22. #disable                 = yes
  23. disable                 = no
  24.  
  25. [root@host ~]# /etc/rc.d/init.d/xinetd start

xinetd経由でないと起動できないようにしたので、万が一、proftpdを単体起動しようとしても、エラーが出て起動できず。
あとはFTPクライアントソフト(NextFTPやFFFTPなど)を使ってFTP接続できてるなら成功である。

繋がらない場合は、ファイヤーウォールなどポートの見直しなどをすること。

メールaliases

2009年6月21日

カテゴリー: CentOS, FedoraCore, Linux, aliases, sendmail — admin @ 7:11 PM

ひとつのメールアドレスにくるメールをふたつのメールアドレスに転送することでバックアップ的なことをしたいと思う。
どうやらaliasesで簡単にできるようです。

aaa@localhost にくるメールを aaa@localhost と、bbb@etc.com に転送する。

CODE:
  1. #vi /etc/aliases
  2. aaa: aaa,bbb@etc.com

これだけでOKなのです。
aliasesって便利!

fedora core6 を fedora10 にアップデートするメモ

2009年5月20日

カテゴリー: FedoraCore, Linux, fedora(7以上) — admin @ 2:21 PM

まずは、fedora-release と fedora-release-notes をアップデートする。

CODE:
  1. [root@host ~]# rpm -Uvh \
  2. http://download.fedora.redhat.com/pub/fedora/linux/releases/10/Fedora/i386/os/Packages/fedora-release-10-1.noarch.rpm \
  3. http://download.fedora.redhat.com/pub/fedora/linux/releases/10/Fedora/i386/os/Packages/fedora-release-notes-10.0.0-1.noarch.rpm

次に、rpm と yum を先にアップデート

CODE:
  1. [root@host ~]# yum update rpm\* yum\*

次に、clean と upgrade を行う

CODE:
  1. [root@host ~]# yum clean all
  2. [root@host ~]# yum upgrade

パッケージのダウンロード終了後、トランザクションテストスタート

CODE:
  1. Is this ok [y/N]: y
  2. Running Transaction Test

特にエラーが出なければ、リブートして完了。
次回起動時に、'fedora 10'の文字が出れば成功(?)かと。

ntfsをmountする – CentOS

カテゴリー: CentOS, Linux — admin @ 12:27 AM

最近まったくブログを更新していなかったので、まめに更新してメモやライブラリを残していこうと思う今日この頃。
メモるくせをつけないとすぐ忘れちゃうからちゃんとメモらないとまずいよね。

さて、CentOSでntfsをmountする手順をまとめておく。
ウチにあまっていた2.5インチHDDたちを稼動してる自宅のサーバに接続してファイルサーバにしてしまおうと思ったからだ。
今まではUSB接続でwindowsマシンにつなげていたが、USBポートがいくらあっても足らんし、サーバ機に繋げてしまえば、いつでもどこでも(家の中なら)アクセスできるし便利だろうと。

まず、下記コマンドを打ってみる。

CODE:
  1. [root@host ~]# mount -t ntfs /dev/sdb1 /mnt/sdb1
  2. mount: マウントポイント /mnt/sdb1 が存在しません

そこで、マウントポイントを作成して、マウントを再試行する。

CODE:
  1. [root@host ~]# mkdir /mnt/o
  2. [root@host ~]# mount /dev/sdb1 /mnt/o/
  3. mount: unknown filesystem type 'ntfs'

'ntfs'なんぞ知らんとのこと。
調べてみたら、'mount -t ntfs-3g' というコマンドでマウントするらしい。
そこで、ntfs-3gをインストールする。

CODE:
  1. [root@host ~]# yum install ntfs-3g

インストールが終わったところ、再マウント。

CODE:
  1. [root@host ~]# mount -t ntfs-3g /dev/sdb1 /mnt/o
  2. FATAL: Module fuse not found.
  3. ntfs-3g-mount: fuse device is missing, try 'modprobe fuse' as root

'modprobe fuse'を試せとのことで、試してみる。

CODE:
  1. [root@host ~]# modprobe fuse
  2. FATAL: Module fuse not found.

'not found' って・・・。
さらに調べると、'dkms-fuse'ってのをインストールしなくてはならないよう。

CODE:
  1. [root@host ~]# yum --enablerepo=rpmforge install dkms-fuse

そして、'modprobe fuse' を実行して、マウントに再挑戦

CODE:
  1. [root@host ~]# modprobe fuse
  2. [root@host ~]# mount -t ntfs-3g /dev/sdb1 /mnt/o/

エラーが返ってこないので成功か?確認してみる。

CODE:
  1. [root@host ~]# ls /mnt/o/
  2. System Volume Information  evangelion  music

マウントに成功!'evangelion' ってナニ?とか聞かないのっ。

次ページへ »