2024年8月25日~2024年8月31日

8/25
nmap -sV -sC -Pn -p- 192.168.56.104
と
nmap -sV -sC -p 1-65535 192.168.56.104
の違いは何か?ポート番号の調べる範囲は同じであることは分かるが、何故違うのか。
-pでポート番号を調べることが出来るが、それを変えることによって体系的に知らせようというわけなのだろうか?

8/26 fpingとnetdiscover
netdiscoverはARPリクエストの一種で以下のコマンドで、IPアドレスに対応するMACアドレスを探すことが出来る。(つまり使用しているIPアドレスがわかり、ネットワーク内で接続できるかもしれないデバイスを探すことが出来る)
netdiscover -i enp0s3 -r 192.168.56.0/24
fping -aqg 192.168.56.0/24
でも同様のことが可能。
コチラはpingによる通信の疎通の確認が可能なIPアドレスを調べることが出来るが、違いは何なのか?
一応netdiscoverはARPスキャンでデバイス(MACアドレス)に対応するIPアドレスを調べることが出来、fpingではpingによる通信可能なIPアドレスを調べることしかできないが、接続している通信先のアドレスを調べる目的であれば、どちらも同じに見える。
メリットとデメリットなどはあるのだろうか?
追加の疑問:
仮想環境に入れたライブラリをどの様に本番環境で呼び出すか?

8/29 pipxで入れたライブラリを実行する(シンボリックリンクの設定)
某本でdroopescanがpipでインストールできなかったため、仮想環境の構築+ライブラリのインストールができるpipx
でdroopescanをインストールした。
しかしコマンドでそのままdroopescan
を実行することは出来ない(直接本番環境にdroopescanがインストールしているわけではない)ので、直接パスを指定して実行する必要がある。
ユーザーディレクトリ/.local/pipx/venvs/droopescan/bin/droopescan
せっかくなのでdroopescan
単体のコマンドで実行したい。つまりシンボリックリンクを作成すればよい。
pipxでインストールされたライブラリを確認するとなぜかシンボリックリンクが作成されていなかった(ls ~/ -la
で確認)ので、echo "export PATH=$PATH:~/.local/bin" >> ~/.bashrc
でシンボリックリンクを作成。
シェルを再起動後ls ~/ -la
で確認したところ、
droopescan -> ~/.local/pipx/venvs/droopescan/bin/droopescan
となっており、コマンドが実行できた。
それにしても、ツールの実行ファイルが PATH に追加されていないだけの話だったが、pipxでインストールしたライブラリは自動的にPATH に追加されないのだろうか?

8/30 Detectron2のDefaultPredictorの仕様
公式の実装の使用例には、DefaultPredictorは以下のような形で推論する。
pred = DefaultPredictor(cfg)
inputs = cv2.imread("input.jpg")
outputs = pred(inputs)
基本的に入力した画像と同じサイズの画像サイズで予測が返ってくる。
しかし実装をよく見ると、
self.aug = T.ResizeShortestEdge([cfg.INPUT.MIN_SIZE_TEST, cfg.INPUT.MIN_SIZE_TEST], cfg.INPUT.MAX_SIZE_TEST)
=====中略======
image = self.aug.get_transform(original_image).apply_image(original_image)
image = torch.as_tensor(image.astype("float32").transpose(2, 0, 1))
とあるので画像をそのまま予測しているわけではない。
pred.aug = T.Resize((1024, 1024))
のように、学習した画像と同じサイズにリサイズするように編集すれば、学習した時と同じ画像サイズで推論できる。

8/31
ターゲットのPCに潜入した際の行動
- ファイルの一覧を確認する
- shellを奪う
- 初期アクセスの状態からコマンドの操作や視認性を上げるため
- 利用できるコマンドを増やすため
- 継続したアクセスを確保できるため?
- 初期接続よりshellの方が監視システムの目を逃れやすい?
- shellは内部のコンピューターで実行している? 初期アクセスのコマンドはあくまでも自分のPCからコマンドを実行し、それを送信して実行している
- ユーザーidを確認する
- どのような権限があるかを確認するため
id
- osを特定する
- os特有の弱点を探すため
unname -a
- 他のユーザーのコマンド実行履歴を調べる
- コマンド履歴にパスワードや権限の履歴があるため?
- .bashrc_historyの確認
cat .bash_history
- tmpディレクトリなどの一時ファイルを確認する
-
tmp
ディレクトリ、var/tmp
ディレクトリ()、/dev/shm/
ディレクトリ(.tmpfs
) ls /tmp -la
-
- suidの探索
- なぜ?
- suidが付与されているプログラムを探査する?
find / -perm -u=s -type f 2> /dev/null