ジャガイモの植え付け

1か月前に腐葉土等をすきこんでおいた植え付け予定地ですが、数週間前までは土を掘れば糸状菌で真っ白でしたが、今はだいぶ落ち着いてきました。

土壌のpHは5.0~6.5。糸状菌が活発になるpHは4~6なので、糸状菌の仕事が終わり落ち着いたタイミングで、苦土石灰によってpH6.5~7.0程度に調整しておきました。

イノシシ対策として、杭を打ってビニールを巻きました。そのうち補強します。

やってみて気づきました。囲い内部は結構暑いし蒸れる。高温多湿が苦手なジャガイモにとってよろしくないですね。paddingを多めに取って植え付けることにします。

なぜ斜めなのか:この下を水道管が通っているためです。

4日前に切っておいたキタアカリを植え付けます。

ジャガイモ(キタアカリ)の種イモを切りました

大体30cm間隔。イモのletter-spacingが狭く見えますが錯覚です。

場所が余ったので男爵を追加で1kg植えました。畝が斜めなのはpaddingを考慮したうえで最大限に植えられるように。

うーんこれはちょっと間隔が狭い気がする。まあ「ダイタイダイジョブ」←以前バイトしてた農園に居たフィリピンの実習生の口癖。

ジャガイモは種イモよりも上の位置にできるため、芽がある程度伸びてきたら土寄せをしてやります。

小さく囲いをすると高温多湿になってしまうので、囲いをするのであればできる限り大きく、畑全体をやらなければダメですね。そもそもイノシシが出なければいいんだが。

進捗が気になる方!続きはこちら↓

ジャガイモの芽が出ました

arp-scanやnmapでネットワークの構成を把握する

自分のIPとネットワークセグメントを確認

問題解決のために知らないネットワークに繋げた際にまずやることはネットワークマッピング。ネットワークに接続し、DHCPによって自動的に設定が行われた場合、自分のIPアドレスとデフォルトゲートウェイを知っておく。

ip addr
ip route

IPアドレスは192.168.1.2/24でデフォルトゲートウェイは192.168.1.1であることが分かる。

同じネットワークに居るホストを列挙

arp-scanで列挙

同じネットワークセグメントに所属するホストを列挙するにはarp-scanを使う。nmapでスキャンをするよりもarp-scanの方が速いしMACアドレスのベンダーコードからメーカーまでわかる。
arp-scan -I eth0 -l

nmapで列挙

ちなみにnmapで列挙するためには、-snオプションで”ping scan”を使う。ただし、pingに応答しないホストは列挙できない。ローカルネットへの”ping scan”でもDNS解決をしようとしてしまうので-nオプションを付けて無効にする。
nmap -n -sn 192.168.1.0/24

各ホストの情報を取得する

同ネットワークセグメント上のホスト一覧が分かったところで、各ホストが何のOSで何のサービスが稼働しているのか調べるにはnmapを使う。

192.168.1.110の詳細な情報を調べる場合:
nmap -nFA 192.168.1.110

-Aを付けて実行をするとOS検知、可動サービスのバージョン情報、スクリプトスキャンなどをしてくれる。-Fを付けると最高速になるが、ファイアーウォールにポートスキャンを検知される可能性が高くなる。-nはDNS解決を無効化するため少し早くなる。

192.168.1.110(Windows10のPC)をスキャンした結果:

このように、Apache2.4.41・PHP7.1.32・mysqlなどが動いていて、NetBIOS名は「ROOT-PC」であることが分かる。MACアドレスのベンダーコードからAsustek製のボードを使っていることも分かった。

このような情報は、技術者にとってトラブル等の解決のヒントになるが、逆に攻撃者にとってはクラッキングの為の有益な情報になってしまう。

もっと詳細に知りたい場合は以下の書籍がおすすめです。

ジャガイモ(キタアカリ)の種イモを切りました

この間ホームセンターで購入したキタアカリ3kgです。日光浴芽を二週間ほどさせて芽が出てきました。

ジャガイモを植える準備【浴光育芽】

植え付けの4日前なので切る事にしました。植え付ける場所は自宅ではなくだんべぇ農園の方ですが。

切る意味としては、株数を増やすためですね。1つのイモを半分に切れば2つになります。

簡単に切ると言っても、ジャガイモの芽は135度ずつ出てくると言われており、綺麗に芽の数を半分にすることは難しいです。あまり小さくなりすぎても体力がなくなってしまいますし、切り口が大きくなりすぎても良くないです。

悩みながら入刀。

大きい個体も小さい個体も芽の数や生えている場所は大体一緒です。なので、購入時は小さいイモがいっぱい入っている袋を選んで、半分に切って植えるのがいいでしょう。

切った後は断面を3,4日ほど乾燥させてから植え付けます。乾燥させる時間が無い場合は草木灰を付けて植えると良いでしょう。

ジャガイモの植え付け

httpでもセキュアになる?wp-login.phpにDigest認証を掛ける

httpで運用されているWordPressはログイン情報は生データでPOSTしているので、パケットが盗聴されたらログイン情報が漏洩してしまいます。

そこで、チャレンジレスポンス方式であるDigest認証をワンクッション置くことで、セキュリティを高めようという魂胆です。

httpsで運用している場合でもwp-login.phpに認証を掛けることでブルートフォースアタックによるログが減ってエコだと思います。

Digest認証用の.htpasswdファイルを作成

ウェブ上にBasic認証用の.htpasswd作成ツールはありましたが、Digest認証用は無かったのでLinux環境でhtdigestコマンドで作成します。

構文:htdigest -c パスワードファイル AuthName ユーザーID

$ htdigest -c .htpasswd lOgIn root

作成したファイルをWordPressのインストールディレクトリにアップします。

.htaccessを編集

WordPressのインストールディレクトリ直下の.htaccessに追記します。

<Files wp-login.php>
AuthType Digest
AuthName "lOgIn"
AuthUserFile /foo/bar/hoge/blog/.htpasswd
require valid-user
</Files>

「AuthUserFile」のディレクトリが分からない場合「<?php phpinfo(); ?>」と書いたphpファイルをアップしてアクセスすると「SCRIPT_FILENAME」が分かるのでそれを参考に設定します。phpinfo();を記述したファイルは忘れず削除しましょう。

※.htaccessや.htpasswd等の編集に絶対にnotepad.exeを使用しないでください。BOMが埋め込まれてInternal Server Errorになります。

成功していればwp-login.phpにアクセスするとパスワードのプロンプトが表示されます。

Digest認証自体は大昔からあるのに未だ普及していないのはなぜだ。

arpspoofで同セグメント上のパケットを盗聴

スタバなどのフリーwifiまたは、パスワードが脆弱なwifi環境から暗号化されていない認証を通るのは危険という話。

arp-scanやnmapでネットワークの構成を把握する

ARPテーブルを改ざん

TCP/IPにおいて通信するためには宛先MACアドレスが必要になる。その際にARPテーブルを参照するが、ARPテーブルに宛先MACアドレスが無い場合、ARPリクエストをブロードキャストで送信する。ARPリクエストを受け取った対象のIPアドレスが設定されている機器は、ARPリプライを返す仕様になっている。

arpspoofによって改ざんしたARPリプライを送信することでARPテーブルは簡単に改ざん可能であり、デフォルトゲートウェイとの間に割り込んでパケットを盗聴することができる。

詳細はこちらが大変参考になります。

https://netwiz.jp/arp-spoofing/

IPフォワードを有効化する

# sysctl -w net.ipv4.ip_forward=1

arpspoofで改ざんしたARPリプライを送信する。ゲートウェイ:192.168.1.1、ターゲット:192.168.1.110

# arpspoof -t ens33 -t 192.168.1.1 -r 192.168.1.110

別のシェルを立ち上げ、tcpdumpでパケットをcapture.pcapファイルにキャプチャする。

# tcpdump -i ens33 -w capture.pcap

試しに何かログインしてみる

攻撃者がキャプチャ中にターゲットPC:192.168.1.110から色々ログインしてみる。

WordPressにログインしてみる。

Basic認証にログインしてみる。

FTPにログインしてみる。

Wiresharkで見てみる

キャプチャしたファイルは後でじっくりWiresharkで見ることができる。

WordPressのIDとパスワードを見る。

WordPressはwp-login.phpにPOSTでIDとパスワードを送信していることから次のクエリで絞り込める。wp-login.phpの名前を変更していたとしてもキャプチャされてしまっては時間稼ぎでしかない。

ip.src == 192.168.1.110 and http.request.uri contains "/wp-login.php" and http.request.method == POST

対策:httpsにするコストが掛けられないのであれば、wp-login.phpにDigest認証を掛け、WordPressアカウント以上に強力なパスワードを設定する。(wp-cronが効かなくなるかも?)
ブルートフォースアタックによるログイン失敗ログの量が減るメリットもある。

Basic認証のIDとパスワードを見る。

Basic認証は平文でIDとパスワードをやり取りしているためこのように見えてしまう。

ip.src == 192.168.1.110 and http.request.method == GET

対策:Digest認証に変更する。

FTPのIDとパスワードを見る。

FTPもやはり平文でやり取りしているためこのように見えてしまう。

ip.src == 192.168.1.110 and ftp

対策:FTPsやSFTPなど暗号化された仕組みを使うのが一番だが、使用できないのであればvpnやsshのポート転送などと併用して信頼できるネットワークから接続する。

ARPスプーフィングされているか知るためには

攻撃を受けるとデフォルトゲートウェイのMACアドレスが変わる。tracertをするとデフォルトゲートウェイよりも手前に知らないアドレスが割り込まれている事が分かる。

ARPの仕様を突いた攻撃のため対策は難しいが、信頼できないwifiやLANは接続しないことと、暗号化されたプロトコルを使用することで傍受されても問題ないようにすることが大切。信頼できないネットワークを使用せざるを得ない場合はvpnやsshのポートフォワーディング等で信頼できるネットワークから利用する。

Ubuntuのパスワードが分からない場合の対処法

※rootのパスワードを設定していない場合に限る。

起動時にESCを連打。ブートメニューを表示。「Advanced options for Ubuntu」を選択。

「(recovery mode)」を選択

表示が崩れましたが、「root」を選択

「passwd 任意のユーザーID」で新たなパスワードを設定。testを設定してみました。

exit, Resumeで起動。設定したパスワードでログインできます。

MR. ROBOTのエリオットの様に音楽CDの中にファイルを隠す方法

MR. ROBOTの主人公エリオットは、ハッキングで得たデータをDeepSoundというアプリケーションを使って音楽ファイルに埋め込み、それをCDに焼いてコレクションしています。

エリオットの様にDeepSoundを使って音楽ファイルに任意のファイルを埋め込む方法を簡単に解説します。

DeepSoundのインストールと使い方

ここからダウンロードしてインストールします。DeepSoundはWindowsにしか対応していません。クールなツールなのに残念です。

DeepSoundを起動します。上に音楽ファイル、下に隠したいファイルをドラッグアンドドロップで追加します。

「Encode secret files」を押して出力します。この時パスワードを設定することでAES256で暗号化できます。
デフォルトのファイルの出力先は「C:\Users\ユーザーID\Documents\」になっていますが、「Settings」で変更可能です。

ファイルを埋め込んだファイルはもちろん通常通り音楽ファイルとして再生可能です。CD-Rに音楽CDとして焼いた場合、CDプレイヤーで再生とPCに再度取り込んで複合化が可能かどうかは検証していません。

ファイルの取り出し方法は、ファイルをドラッグアンドドロップして対象のファイルを選択後「Extract secret files」を押します。

 

音楽ファイルのダウンロード方法

劇中に映画をtorrentでダウンロードして観ている描写があることから、おそらく音楽ファイルも購入したものではなくダウンロードしたものかと思われます。

ここからエリオットならこうするだろうなという予想です。

以下のクエリでGoogle検索すると、アーティスト名の曲のmp3ファイルがヒットします。

intitle:”Index of /” and intext:”Apache” and mp3 and アーティスト名

Googleは世界中のウェブサーバーをインデックスしており、膨大な情報をため込んでいます。その中には設定ミス等で公開状態になっているプライベートなディレクトリがインデックスされていることが多々あります。それを見つけるのがこの検索クエリです。

あとは次のようなコマンドでダウンロードしているのではないかと想像します。

wget -nd -r -l1 -A mp3 対象URL

cryptsetupでLUKSファイルシステムを使用する

今回はHDDなどの物理媒体を暗号化するのではなく、ファイルを暗号化します。

ddコマンドでテスト用ファイルluks.img(1GB)を作成。

# dd if=/dev/zero of=luks.img bs=1M count=1024

1.LUKSとしてフォーマット

cryptsetup luksFormat イメージファイルorデバイスファイル」でLUKSとしてフォーマットします。A you sure?には大文字でYESと入力。次にパスフレーズを2度聞かれるので入力します。

# cryptsetup luksFormat luks.img
WARNING!
========
This will overwrite data on luks.img irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase for luks.img:
パスフレーズを確認:

fileコマンドで確認してみます。

# file luks.img
luks.img: LUKS encrypted file, ver 1 [aes, xts-plain64, sha256] UUID: 94fd36b1-f397-4f14-8ee6-a39c6c88809b

cryptsetup luksDumpで詳細な情報が得られます。

# cryptsetup luksDump luks.img
LUKS header information for luks.img
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: 4096
MK bits: 256
MK digest: f6 53 e6 6a 29 a1 28 9d 42 45 4e 75 63 89 c6 29 fc 96 59 01
MK salt: 9b 37 90 94 1c 97 e9 b6 4e 6b b6 b1 3e 6e 01 ee
ef 3b a9 70 9c e4 b8 03 4e 52 15 ae e0 d1 3c 83
MK iterations: 213472
UUID: 94fd36b1-f397-4f14-8ee6-a39c6c88809b
Key Slot 0: ENABLED
Iterations: 3415556
Salt: a6 aa 14 a3 0a c7 f9 e3 c9 72 9b ab 75 92 de 60
70 44 cc 6e 1f b6 c0 0e 16 76 45 b9 07 f9 76 b7
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
:

2.LUKSを開く

cryptsetup luksOpen イメージファイルorデバイスファイル 任意の名前」でLUKSを開きます。

# cryptsetup luksOpen luks.img luksfilesystem
Enter passphrase for luks.img:

パスワードが正しい場合「/dev/mapper/任意の名前」にデバイスファイルが出現します。「luksfilesystem」という名前で開いたので「/dev/mapper/luksfilesystem」が対象のファイルです。

# ls /dev/mapper/
control luksfilesystem←これ

3.ファイルシステムを作成

通常のデバイスと同じ要領でmkfsなどでファイルシステムを作成します。

# mkfs -t ext4 /dev/mapper/luksfilesystem

4.マウントする

通常のデバイスと同じ要領でマウントします。

# mount /dev/mapper/luksfilesystem /mnt

通常のディレクトリと同じようにアクセスできます。

# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/luksfilesystem 990M 2.6M 921M 1% /mnt
# ls /mnt
lost+found

5.アンマウントしてLUKSファイルシステムを閉じる

デバイスの取り外しの際にはアンマウントした後にcryptsetup luksCloseを実行してLUKSを閉じます。

# unmount /mnt
# cryptsetup luksClose luksfilesystem

おまけ bruteforce-luks

キーフレーズが設定されたLUKSはbruteforce-luksでブルートフォースや辞書アタックが可能です。ちなみにLUKSファイルの頭10MBあれば攻撃可能です。

# dd if=luks.img of=lukstest.img bs=1M count=10
# bruteforce-luks -f /usr/share/john/password.lst lukstest.img

WordPressのパスワードが分からない場合の対処法

phpmyadminにログインできるかデータベースがいじれるのなら、wp_usersテーブルにある対象のユーザーのuser_passを編集します。

user_passの関数をMD5に変更し、任意のパスワードを値に入れて実行。

そのパスワードでログインできるようになります。

John the RipperでLinuxのパスワードを解読する方法

Linuxは全ユーザーに閲覧権限のある/etc/passwdにログイン情報が書かれています。

(スラッシュはセキュリティの都合上、全角で表記しています)

大昔は同ファイルにパスワードハッシュも書いてある時代がありましたが、セキュリティを高めるためにシャドウパスワードと呼ばれる/etc/passwdとは別に/etc/shadowにパスワードハッシュを保存するという形を取るようになりました。

ちなみにシャドウパスワードを有効化・無効化するコマンドがあります。
(おそらく使わないでしょうけど)
シャドウパスワードの有効化: pwconv
シャドウパスワードの無効化: pwunconv

john the ripperをインストール

aptコマンドでインストールします。

sudo apt update && sudo apt install john

パスワード解読のアカウントを作成

パスワード解読のデモンストレーションなので、あえてガバガバなパスワードでユーザーアカウントを作成します。

sudo useradd testuser
sudo passwd testuser
(パスワードを入力:test)

ID: testuser PW: testのアカウントができました。

/etc/shadowを解読

/etc/shadowから解読したいアカウントの行を出力させます。先ほど新規追加したアカウントを解読するため「tail -1」で一番下の行を出力しています。

sudo tail -1 /etc/shadow > passwd

次のような文字列がカレントディレクトリのpasswdファイルに出力されます。

testuser:$6$JwHz7UVh$3hAf/Gs7/KT7C49PfTQwPdlLBCLBOv2uUoGAYpA2SzJYX2zzlgQ2SaERwOKHsCU/.NK33HfiZwkCo6fQ9LmTl0:18308:0:99999:7:::

johnで解読します。

john ./passwd

一瞬でパスワードが「test」と出ました。

パスワードの解読はデフォルトではsingle、wordlist(デフォルト:/usr/share/john/password.lst)、inclimentalの順で実行されるようです。

辞書ファイルに載っているような単語であれば、この通り一瞬で解読されてしまいます。

ちなみに環境によっては「No password hashes loaded (see FAQ)」と表示される場合があるので、その際は次のように「–format=crypt」を指定して実行します。
john passwd –format=crypt