Debianでのダウンストリームのパッケージの使い方

DebianでDown Streamのパッケージの使用方法を書く。

## down streamとは

OSにおいて、下流のOSのことをダウンストリームという。
debianに対するUbuntu,
rhelに対するFedora
などがメジャーなダウンストリームだ。

このダウンストリームの関係では互換性が強く、
下流のOSのパッケージを流用することができることが多い(できないこともある。)。

また、red hat社員がFedoraのコントリビューターだったり、
canonical社員がDebianのコントリビューターなど、
ビジネス的にもコミュニティ的にも関係が良好なことも多い(すべてでないが)。

## 使用するOS

今回はDebianのDown streamのKali linuxを使ってみる。

普段はDebianの安定性が欲しいが、たまにKaliみたいなOffensiveな環境が欲しい
ときに有用な組み合わせだ。

### osのバージョン

そのkaliがどのdebianベースのバージョンなのか？を必ず調べる事。
2022-06-16日現在、最新のKaliはdebian10 busterベースなので、debian10をベースにkaliのパッケージを追加していく。

## 設定

### kali linuxのレポジトリを追加

下のように実行するとkali linuxのレポジトリが入り、aptで管理されるようになる。

```bash
echo "# kali-last-snapshot is " >> /etc/apt/sources.list
echo "deb http://http.kali.org/kali kali-last-snapshot main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://http.kali.org/kali kali-last-snapshot main contrib non-free" >> /etc/apt/sources.list
```

### レポジトリの優先度の設定

必須。これをしないとdebianにあるパッケージとkaliにあるパッケージがごちゃまぜになる。
本体はDebianなのにセキュリティ以外のkaliのパッケージ取ってきて、
パッケージの依存関係がおかしくなったりする原因になる。

基本はkaliの使いたいパッケージだけ、本体のdebianよりも
優先度を上げて、それ以外のパッケージは優先度を下げることで
依存関係が壊れないようにする。

PinPriorityは高ければ高いほど優先度が上がる。
設定はあとがきのものが優先される。
nmapはdebianにもあるはずだが、kaliの攻撃用のパッケージで依存関係があるものがある可能性が高いので、
Kaliのものを選択するように調整するなど。

[apt pinpryorityの優先度](https://manpages.debian.org/testing/apt/apt_preferences.5.ja.html)

```bash
sudo mkdir /etc/apt/preferences.d
cat << END >> /etc/apt/preferences.d/kali-linux.pref
# Kali posteritory to Debian in security tool

# Pin-Priorityを101にすると、特に指定しない限りこのパッケージを取ってこない。
# また優先度が100よりも大きいので、install後のupdate時にdebianのパッケージで上書きされることもない。
# Package * と指定しているので、kaliのすべてのパッケージは取ってこないという事。
# このあと、kaliの使うパッケージを個別に優先度を上げていくで対処していく。
Package: *
Pin: release o=Kali
Pin-Priority: 101

## security-tools

# pin-priority 501はインストールされていないパッケージの優先度500よりも高いため、
# debianのインストールされていないパッケージよりも常にkaliのnmapが優先されるという事になる。
Package: nmap
Pin: release o=Kali
Pin-Priority: 501

Package: netdiscover
Pin: release o=Kali
Pin-Priority: 501

Package: dirb dirbuster
Pin: release o=Kali
Pin-Priority: 501

Package: dirb dirbuster
Pin: release o=Kali
Pin-Priority: 501

Package: nikto
Pin: release o=Kali
Pin-Priority: 501

Package: skipfish
Pin: release o=Kali
Pin-Priority: 501

Package: wapiti
Pin: release o=Kali
Pin-Priority: 501

Package: wapiti
Pin: release o=Kali
Pin-Priority: 501

Package: joomscan
Pin: release o=Kali
Pin-Priority: 501

Package: ruby-public-suffix ruby-cms-scanner wpscan
Pin: release o=Kali
Pin-Priority: 501

Package: sqlmap
Pin: release o=Kali
Pin-Priority: 501

Package: netcat
Pin: release o=Kali
Pin-Priority: 501

Package: netcat
Pin: release o=Kali
Pin-Priority: 501

Package: wireshark
Pin: release o=Kali
Pin-Priority: 501

Package: nbtscan
Pin: release o=Kali
Pin-Priority: 501

Package: zaproxy
Pin: release o=Kali
Pin-Priority: 501

Package: unicornscan
Pin: release o=Kali
Pin-Priority: 501

Package: weevely
Pin: release o=Kali
Pin-Priority: 501

Package: beef-xss
Pin: release o=Kali
Pin-Priority: 501

Package: hydra-gtk
Pin: release o=Kali
Pin-Priority: 501

Package: patator
Pin: release o=Kali
Pin-Priority: 501

Package: enum4linux
Pin: release o=Kali
Pin-Priority: 501

Package: macchanger
Pin: release o=Kali
Pin-Priority: 501

Package: aircrack-ng
Pin: release o=Kali
Pin-Priority: 501

Package: kismet
Pin: release o=Kali
Pin-Priority: 501

Package: wifite
Pin: release o=Kali
Pin-Priority: 501

Package: fern-wifi-cracker
Pin: release o=Kali
Pin-Priority: 501

Package: anonsurf
Pin: release o=Kali
Pin-Priority: 501

Package: armitage
Pin: release o=Kali
Pin-Priority: 501

Package: openvas
Pin: release o=Kali
Pin-Priority: 501

Package: burpsuite
Pin: release o=Kali
Pin-Priority: 501

Package: expoitdb
Pin: release o=Kali
Pin-Priority: 501

Package: onionshare
Pin: release o=Kali
Pin-Priority: 501

Package: tor
Pin: release o=Kali
Pin-Priority: 501

END
```

### kaliのarchive-keyのインストール

下の用に実行してarchive-keyをインストールしてください。

```bash
if cat /etc/debian_version | grep 10. > /dev/null; then
wget -qO- https://archive.kali.org/archive-key.asc | sudo apt-key add
# Since apt-key is deprecated in debian 11 and later, use below.
# apt-key will be removed in debian 12.
# elif cat /etc/debian_version | grep 11. > /dev/null; then
#   wget https://archive.kali.org/archive-key.asc
#   gpg --no-default-keyring --keyring /etc/apt/trusted.gpg.d/kali-repository.gpg --import ./archive-key.asc
fi
```

### kaliのパッケージリストを追加したので一覧更新

```bash
sudo apt update
```

## よく使う脆弱性ツールのインストール

インストールにつまずきそうなものだけ並べていく。

### metasplot frameworkのインストール

必須。確実に使う。

```bash
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod u+x msfinstall
sudo ./msfinstall
```

### wpscanのインストール

wordpressの脆弱性を調べるツール。
インストールがちょっと複雑なので書きます。

wpscanはruby-cms-scannerに依存してて、
ruby-cms-scannerはruby-public-sufficに依存しているという
作りなので下の順番にインストールする必要があります。

特に指定しないとdebianのruby-public-sufficを取ってくるが、
これは古くてruby-cms-scannerのインストールに失敗するので、kali-last-snapshotとレポジトリを指定する事により、
kaliのruby-public-suffixを取ってきます。

```bash
# debian repository rusy-public-suffic is oldstable. debian 3.0.3+ds-1 is to be installed
sudo apt install -y ruby-public-suffix -t kali-last-snapshot
# Depends: ruby-public-suffix (>= 4.0.3)
sudo apt install -y ruby-cms-scanner
sudo apt install -y wpscan
```

他にも脆弱性ツールの依存関係で失敗する場合はkaliのパッケージを指定するか、
優先度を変更することにより調整してください。

## まとめ

情報があまりないが以外と簡単な事がわかると思う。
これと同じ要領でdebianでubuntuのパッケージを使うことも可能。

## ソースコード

[vagrant cloud](https://app.vagrantup.com/OtogawaKatsutoshi/boxes/buster_kali_offensive/versions/2022.06.15)
[github](https://github.com/KatsutoshiOtogawa/buster_kali_offensive)