Yamato-Security / hayabusa

Hayabusa (隼) is a sigma-based threat hunting and fast forensics timeline generator for Windows event logs.
GNU General Public License v3.0
2.17k stars 189 forks source link

auto completion #1058

Open kazuminn opened 1 year ago

kazuminn commented 1 year ago

$ ./target/release/hayabusa csv-timeline -f ../hayabusa-sample-evtx/YamatoSecurity/Sysmon/Sysmon-27-BlockExeWrite_AbusingCertutil.evtx

の状態からusageみたいなものを(他のオプションなど)を表示することが可能なら、便利かもしれない。

今は、

$ ./target/release/hayabusa csv-timeline

とすると、表示できるがこの状態になるように、消さないといけない。

補完もできると、嬉しいかもしれない。

kazuminn commented 1 year ago

linuxのbashとかなら、ソフトウェア側からの何かを提供する形になってるのを聞いたことがありますが、windowsは何もわからない。

kazuminn commented 1 year ago

$ ./target/release/hayabusa csv-timeline -f ../hayabusa-sample-evtx/YamatoSecurity/Sysmon/Sysmon-27-BlockExeWrite_AbusingCertutil.evtx help

みたいに、helpを足すと、ほかのオプションも見れるなども、良いかもしれない。

hitenkoku commented 1 year ago

The following issues are managed for completions

https://github.com/Yamato-Security/hayabusa/issues/818

YamatoSecurity commented 1 year ago

@kazuminn ありがとうございます! hayabusa.exe c<TAB>を押した時にccsv-timelineにタブ補完できたら、凄く楽になるので、コマンドのタブ補完を導入したいのですが、以前Dさんが調べた時に、bash, powershell, command prompt等々それぞれの環境に対応する必要がありそうで、大変そうだったので、一旦放置していると思います。

オプションも結構多いので、オプションを忘れた場合は、hayabusa.exe csv-timeline -f file.exe <TAB>を押した時に、ヘルプメニューが出てきたら、便利だと思いますが、実装が難しいのでは? 今はユーザがhayabusa.exe csv-timelineでヘルプメニューを出してから、コマンドを打てば、途中でオプションを忘れた場合は上を見ればあるので、オプションのタブ補完は優先度低いと思います。

kazuminn commented 4 months ago

bash, powershell, command prompt等々それぞれの環境に対応する必要がありそうで、大変そうだったので、一旦放置していると思います。

clap_completeクレートを使えば、bash, zsh, fish, poweshell, elvish に対応可能なので、実装してみます。

kazuminn commented 4 months ago

@YamatoSecurity bashで動作を確認できましたが、ユーザー側に設定してもらう必要があります。

ユーザー側で auto-completeサブコマンドを実行すると、シェルスクリプトを吐いてくれて そのスクリプトをshellごとの補完システムに合わせて登録すると動きます。

そこが若干面倒なのが、懸念点です。

YamatoSecurity commented 4 months ago

@kazuminn なるほど、自動的に追加できたら良いと思ったけど、すでに追加されている可能性があるので、ちょっと危ないですね。それを完璧に検知して上書きできなかったら、シェルプロフィールが壊れてしまうので、少し手間がかかるのが残念だけど、仕方なく手動で追加して貰うのが一番無難そうですね。

YamatoSecurity commented 4 months ago

Hayabusaのscan wizardのようにユーザがどのシェルを使っているか聞いて、それに対応するスクリプトを出力するようにできますか? 例:

? Which shell are you using? ›
❯ 1. Bash
  2. Fish
  3. Zsh
  4. PowerShell
kazuminn commented 4 months ago

@YamatoSecurity scan wizard対応できると思います。やってみます。 :muscle:

kazuminn commented 3 months ago

こちらの別のライブラリを使うと、自動的にintegrateしてくれるかもしれないので、調査してみます。

https://docs.rs/clap_autocomplete/latest/clap_autocomplete/

kazuminn commented 1 month ago

こちらの別のライブラリを使うと、自動的にintegrateしてくれるかもしれないので、調査してみます。

こちら、自動的にintegrateするものではなく、手動で登録するものでした。 また、ただのclap_completeのラッパーでした。なので、zshも動かないものです。 扱いづらいです。

なので、最初のclap_completeで実装してみます。