gemesa/malware-analysis-toolkit

GitHub: gemesa/malware-analysis-toolkit

一份覆盖恶意软件静态逆向、动态沙箱、网络监测与移动端分析的完整环境搭建指南。

Stars: 1 | Forks: 0

# 恶意软件分析工具包 恶意软件分析工具的设置指南。 核心工具: - [Android Studio](#android-studio) - [Apktool](#apktool) - [Binwalk](#binwalk) - [capa](#capa) - [DiE](#die) - [frida](#frida) - [Ghidra](#ghidra) - [INetSim](#inetsim) - [JADX](#jadx) - [Joern](#joern) - [LLVM](#llvm) - [OpenSSL](#openssl) - [Python](#python) - [QEMU](#qemu) - [Qiling](#qiling) - [rbi](#rbi) - [shadow-shell](#shadow-shell) - [Suricata](#suricata) - [VirtualBox](#virtualbox) - [Wireshark](#wireshark) - [YARA](#yara) - [Zeek](#zeek) macOS: - [ILSpy](#ilspy) - [ipsw](#ipsw) - [pythonnet](#pythonnet) # Ghidra ## 基础 ``` curl -s "https://get.sdkman.io" | bash sdk install gradle sdk list java sdk install java 21.0.7-tem git clone https://github.com/NationalSecurityAgency/ghidra.git cd ghidra gradle -I gradle/support/fetchDependencies.gradle gradle assembleAll ``` Ghidra 调试器所需: ``` pip install psutil pip install google-api-python-client ``` PyGhidra: https://pypi.org/project/ghidra-stubs/ ``` pip install pyghidra pip install ghidra-stubs ``` ### 配置 - **Edit** --> **Theme** --> **Switch...** --> Flat Dark - **Edit** --> **Theme** --> **Configure** --> Fonts --> font.plugin.terminal --> Source Code Pro-BOLD-12 - **Edit** --> **Theme** --> **Configure** --> Colors --> color.fg.plugin.terminal.normal.blue --> RGB --> Color Code: 00FFFF, Alpha: 255 - 添加 Python stubs: https://github.com/NationalSecurityAgency/ghidra/issues/8018#issuecomment-2810720052 - 打开一个 domain file, 然后 **File** --> **Configure** --> **BSim** ### 启动 ``` cd ghidra/build/dist/ghidra_11.4_DEV ./ghidraRun ``` 参考: - https://sdkman.io/ - https://github.com/NationalSecurityAgency/ghidra?tab=readme-ov-file#build - https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md#common-gradle-tasks ## Ghidra 服务器 ``` cd ghidra/build/dist/ghidra_11.4_DEV sudo ./server/svrInstall ``` ### 配置 ``` cd ghidra/build/dist/ghidra_11.4_DEV sed -i 's|ghidra.repositories.dir=./repositories|ghidra.repositories.dir=/home/gemesa/git-repos/ghidra-server|' server/server.conf sed -i 's|wrapper.app.parameter.2|wrapper.app.parameter.2=-u\nwrapper.app.parameter.3|' sudo ./server/ghidraSvr restart ./server/ghidraSvr status sudo ./server/svrAdmin -add gemesa sudo ./server/svrAdmin -users ``` ### 启动 ``` cd ghidra/build/dist/ghidra_11.4_DEV sudo ./server/ghidraSvr start ``` 参考: - https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/RuntimeScripts/Common/server/svrREADME.html ## BSim ``` cd ghidra/build/dist/ghidra_11.4_DEV cd Ghidra/Features/BSim/support sudo dnf install readline-devel ./make-postgres.sh ``` ### 启动 ``` cd ghidra/build/dist/ghidra_11.4_DEV ./support/bsim_ctl start ~/git-repos/bsim-db ``` 参考: - https://github.com/NationalSecurityAgency/ghidra/blob/master/GhidraDocs/GhidraClass/BSim/BSimTutorial_Intro.md - https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Features/BSim/src/main/help/help/topics/BSim - https://github.com/NationalSecurityAgency/ghidra/pull/7085#issuecomment-2438640305 ## 扩展 - https://github.com/google/binexport - https://github.com/ubfx/BinDiffHelper - https://github.com/gemesa/ghidra-scripts # INetSim ``` wget https://www.inetsim.org/downloads/inetsim-1.3.2.tar.gz tar -xzf inetsim-1.3.2.tar.gz sudo groupadd inetsim cd inetsim-1.3.2 sudo ./setup.sh sudo dnf install perl-Net-Server perl-IPC-Shareable perl-Digest-SHA perl-IO-Socket-SSL sudo dnf install perl-CPAN perl-App-cpanminus # REMnux 上已安装 Net::DNS@1.22(1.40..1.50 等较新版本无法与 INetSim 配合使用) sudo cpanm Net::DNS@1.22 --verbose --notest ``` ## 配置 ``` sed -i 's|#service_run_as_user inetsim|service_run_as_user gemesa|' conf/inetsim.conf sed -i 's|start_service tftp|#start_service tftp|' conf/inetsim.conf sed -i 's|start_service irc|#start_service irc|' conf/inetsim.conf sed -i 's|start_service ntp|#start_service ntp|' conf/inetsim.conf sed -i 's|start_service finger|#start_service finger|' conf/inetsim.conf sed -i 's|start_service ident|#start_service ident|' conf/inetsim.conf sed -i 's|start_service syslog|#start_service syslog|' conf/inetsim.conf sed -i 's|start_service time_tcp|#start_service time_tcp|' conf/inetsim.conf sed -i 's|start_service time_udp|#start_service time_udp|' conf/inetsim.conf sed -i 's|start_service daytime_tcp|#start_service daytime_tcp|' conf/inetsim.conf sed -i 's|start_service daytime_udp|#start_service daytime_udp|' conf/inetsim.conf sed -i 's|start_service echo_tcp|#start_service echo_tcp|' conf/inetsim.conf sed -i 's|start_service echo_udp|#start_service echo_udp|' conf/inetsim.conf sed -i 's|start_service discard_tcp|#start_service discard_tcp|' conf/inetsim.conf sed -i 's|start_service discard_udp|#start_service discard_udp|' conf/inetsim.conf sed -i 's|start_service quotd_tcp|#start_service quotd_tcp|' conf/inetsim.conf sed -i 's|start_service quotd_udp|#start_service quotd_udp|' conf/inetsim.conf sed -i 's|start_service chargen_tcp|#start_service chargen_tcp|' conf/inetsim.conf sed -i 's|start_service chargen_udp|#start_service chargen_udp|' conf/inetsim.conf sed -i 's|start_service dummy_tcp|#start_service dummy_tcp|' conf/inetsim.conf sed -i 's|start_service dummy_udp|#start_service dummy_udp|' conf/inetsim.conf sed -i 's|#service_bind_address 10.10.10.1|service_bind_address 192.168.56.128|' conf/inetsim.conf sed -i 's|#dns_default_ip 10.10.10.1|dns_default_ip 192.168.56.128|' conf/inetsim.conf ``` 设置静态 IP 和 DNS: ``` nmcli connection show sudo nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.56.128/24 ipv4.gateway 192.168.56.128 ipv4.dns 192.168.56.128 sudo nmcli connection down "Wired connection 1" sudo nmcli connection up "Wired connection 1" ``` 恢复静态 IP 和 DNS(升级或安装新软件包时需要): ``` sudo nmcli connection modify "Wired connection 1" ipv4.method auto sudo nmcli connection modify "Wired connection 1" ipv4.addresses "" ipv4.gateway "" sudo nmcli connection modify "Wired connection 1" ipv4.dns "" sudo nmcli connection down "Wired connection 1" sudo nmcli connection up "Wired connection 1" ``` 更新防火墙规则: ``` sudo firewall-cmd --permanent --add-port=80/tcp # HTTP sudo firewall-cmd --permanent --add-port=443/tcp # HTTPS sudo firewall-cmd --permanent --add-port=21/tcp # FTP sudo firewall-cmd --permanent --add-port=25/tcp # SMTP sudo firewall-cmd --permanent --add-port=53/tcp # DNS (TCP) sudo firewall-cmd --permanent --add-port=53/udp # DNS (UDP) sudo firewall-cmd --permanent --add-port=110/tcp # POP3 sudo firewall-cmd --permanent --add-port=143/tcp # IMAP sudo firewall-cmd --reload sudo firewall-cmd --list-all ``` ## 启动 ``` sudo ./inetsim ``` 检查服务: ``` netstat -tuln sudo tail -f log/service.log ``` 参考: - https://www.inetsim.org/requirements.html - https://www.inetsim.org/documentation.html # Zeek ``` sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/security:zeek/Fedora_41/security:zeek.repo sudo dnf install zeek ``` ## 配置 ``` sudo ln -s /opt/zeek/bin/zeek /usr/local/bin/zeek sudo ln -s /opt/zeek/bin/zeekctl /usr/local/bin/zeekctl sudo ln -s /opt/zeek/bin/zeek-cut /usr/local/bin/zeek-cut ip a sudo sed -i 's|interface=eth0|interface=enp0s3|' /opt/zeek/etc/node.cfg ``` ## 启动 ``` ip a sudo zeek -i enp0s3 ``` 打开另一个终端: ``` cat http.log | zeek-cut -d ts uid id.orig_h host ``` 参考: - https://github.com/zeek/zeek/wiki/Binary-Packages#fedora-41 - https://docs.zeek.org/en/master/quickstart.html # Suricata ``` sudo dnf install dnf-plugins-core sudo dnf copr enable @oisf/suricata-7.0 sudo dnf install suricata sudo suricata-update ``` ## 配置 ``` ip a sudo sed -i 's| HOME_NET| #HOME_NET|' /etc/suricata/suricata.yaml sudo sed -i 's|#HOME_NET: "any"|#HOME_NET: "any"\n HOME_NET: "[192.168.56.128/25]"|' /etc/suricata/suricata.yaml sudo cat /etc/suricata/suricata.yaml ... address-groups: #HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]" #HOME_NET: "[192.168.0.0/16]" #HOME_NET: "[10.0.0.0/8]" #HOME_NET: "[172.16.0.0/12]" #HOME_NET: "any" HOME_NET: "[192.168.56.128/25]" ... ``` ## 启动 创建一些规则: ``` cat http.rules alert http any any -> any any (msg:"HTTP GET Request Detected"; flow:established,to_server; http.method; content:"GET"; sid:1000001; rev:1;) alert http any any -> any any (msg:"HTTP POST Request Detected"; flow:established,to_server; http.method; content:"POST"; sid:1000002; rev:1;) ``` ``` suricata -h ip a sudo suricata -s http.rules -i enp0s3 ``` 打开另一个终端: ``` sudo tail -f /var/log/suricata/fast.log ``` 参考: - https://docs.suricata.io/en/latest/install.html#installing-from-package-repositories - https://docs.suricata.io/en/latest/rule-management/adding-your-own-rules.html# - https://github.com/OISF/suricata/tree/master/rules # DiE ``` sudo dnf install cmake qt5-qtbase-devel qt5-qttools-devel qt5-qtmultimedia-devel qt5-qtsvg-devel qt5-qtwebsockets-devel qt5-qtdeclarative-devel qt5-qtscript-devel qt5-qtquickcontrols2-devel qt5-qtwayland-devel git clone --recursive https://github.com/horsicq/DIE-engine.git cd DIE-engine mkdir -p build cmake . -B build cd build make -j4 sudo make install -j4 ``` ## 配置 ``` sudo dnf install qt5ct echo 'export QT_QPA_PLATFORMTHEME=qt5ct' >> ~/.zshrc source ~/.zshrc ``` `qt5ct` --> Appearance --> Palette --> Custom --> Color scheme --> darker --> OK 然后 注销并重新登录 ## 启动 ``` die ``` 或 ``` diec ``` 参考: - https://github.com/horsicq/Detect-It-Easy/blob/master/docs/BUILD.md#how-to-build-with-cmake - https://unix.stackexchange.com/questions/745499/how-to-enable-dark-theme-for-qt-applications # VirtualBox ``` sudo dnf install gcc make perl kernel-devel wget https://www.virtualbox.org/download/oracle_vbox_2016.asc sudo rpm --import oracle_vbox_2016.asc wget https://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo sudo mv virtualbox.repo /etc/yum.repos.d/ sudo dnf install VirtualBox-7.0 sudo usermod -a -G vboxusers $USER ``` 指纹: ``` B9F8 D658 297A F3EF C18D 5CDF A2F6 83C5 2980 AECF Oracle Corporation (VirtualBox archive signing key) ``` ## Fedora 虚拟机 安装 [Fedora](https://fedoraproject.org/workstation/download)。 ### 配置 - 虚拟机设置: - **Settings** --> **System** - --> **Processor** --> Processors: 4 - --> **Motherboard** --> Base Memory: 4096 - **Devices** --> **Shared Clipboard** --> Bidirectional - **Settings** - --> **Display** --> **Resolution** --> 1600 x 900 - --> **Appearance** --> **Style** --> Dark - `sudo dnf upgrade --refresh -y` - 安装[上面](#malware-analysis-toolkit)列出的工具 - 虚拟机设置: - **Settings** - --> **Adapter 1** --> Attached to: Internal Network - --> **Shared Folders** --> add read-only, auto-mount folder, path: `/home/gemesa/malware-bazaar` - 创建虚拟机快照 ## 故障排除 ### `VirtualBox 无法启用 AMD-V 扩展。请禁用 KVM 内核扩展,重新编译内核并重启 (VERR_SVM_IN_USE)` ``` lsmod | grep kvm ``` ``` sudo modprobe -r kvm_amd ``` 或 ``` sudo modprobe -r kvm_intel ``` 参考: - https://www.virtualbox.org/wiki/Linux_Downloads # Python ``` sudo dnf install python pip ``` # LLVM ``` sudo dnf install llvm ``` # OpenSSL ``` sudo dnf install openssl ``` # capa ``` wget https://github.com/mandiant/capa/releases/download/v9.1.0/capa-v9.1.0-linux.zip unzip capa-v9.1.0-linux.zip sudo mv capa /usr/local/bin/ ``` # frida ``` pip install frida-tools ``` # rbi ``` git clone https://github.com/N0fix/rustbininfo sudo dnf install poetry cd rustbininfo poetry build pip install dist/*.whl ``` # QEMU ``` sudo dnf install qemu-user sudo dnf install qemu-user-static sudo dnf install qemu-user-static-aarch64 sudo dnf install qemu-system-aarch64 sudo dnf install qemu-system-aarch64-core sudo dnf install sysroot-aarch64-fc41-glibc ``` # shadow-shell ``` git clone https://github.com/gemesa/shadow-shell sudo dnf install mingw64-gcc sudo dnf install gcc-aarch64-linux-gnu sudo dnf install binutils-aarch64-linux-gnu sudo dnf install sysroot-aarch64-fc41-glibc sudo dnf install llvm cd shadow-shell ``` 然后 ``` make arm64x make x64 ``` # Qiling ``` pip install qiling ``` 参考: - https://docs.qiling.io/en/latest/install/ # YARA ``` wget https://github.com/VirusTotal/yara-x/releases/download/v0.13.0/yara-x-v0.13.0-x86_64-unknown-linux-gnu.gz tar -xzf yara-x-v0.13.0-x86_64-unknown-linux-gnu.gz sudo mv yr /usr/local/bin/ ``` 参考: - https://virustotal.github.io/yara-x/docs/intro/installation/ # Wireshark ``` sudo dnf install wireshark sudo usermod -a -G wireshark gemesa ``` # Joern ``` git clone https://github.com/joernio/joern cd joern sdk install scala sdk install sbt sbt stage ``` 参考: - https://docs.joern.io/ # ILSpy ``` brew install dotnet@8 export DOTNET_ROOT=/opt/homebrew/opt/dotnet@8/libexec export PATH=$PATH:/Users/gemesa/.dotnet/tools dotnet tool install --global ilspycmd ``` 用法: ``` ilspycmd -il -t Client.Settings -o Client.Settings.il ~/Downloads/cfe65a88ebc858c083c6bfd48d1caf16128a420d9352b46c3107b8b1a1614639.exe ilspycmd -p -o ./AsyncRAT ~/Downloads/cfe65a88ebc858c083c6bfd48d1caf16128a420d9352b46c3107b8b1a1614639.exe ``` 在 VS Code 中浏览反编译的项目(首先安装 `C# Dev Kit` 扩展)。 或者,使用带有 GUI 的已弃用 [AvaloniaILSpy](https://github.com/icsharpcode/AvaloniaILSpy/)。 参考: - https://github.com/icsharpcode/ILSpy/blob/master/ICSharpCode.ILSpyCmd/README.md # ipsw ``` brew install ipsw ``` # pythonnet ``` brew install dotnet export DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec pip install pythonnet curl -L -o dnlib.nupkg https://www.nuget.org/api/v2/package/dnlib/ unzip dnlib.nupkg -d dnlib_pkg cp dnlib_pkg/lib/netstandard2.0/dnlib.dll . ``` 用法: ``` from pythonnet import load load("coreclr") import clr import sys sys.path.append(".") clr.AddReference("dnlib") from dnlib.DotNet import ModuleDefMD module = ModuleDefMD.Load("dcrat.exe") print(f"Module: {module.Name}") for t in module.Types: if t.Name != "": print(f" Class: {t.Namespace}.{t.Name}") ``` ``` python3 test.py Module: ClientJAH.exe Class: Client.Program Class: Client.Settings Class: Client.Connection.ClientSocket Class: Client.Connection.Amsi Class: Client.Connection.Win32 Class: Client.Install.NormalStartup Class: Client.Helper.AntiProcess Class: Client.Helper.PROCESSENTRY32 Class: Client.Helper.Anti_Analysis Class: Client.Helper.Camera Class: Client.Helper.HwidGen Class: Client.Helper.IdSender Class: Client.Helper.Methods Class: Client.Helper.MutexControl Class: Client.Helper.NativeMethods Class: Client.Helper.ProcessCritical Class: Client.Helper.SetRegistry Class: Client.Algorithm.Aes256 Class: MessagePackLib.MessagePack.BytesTools Class: MessagePackLib.MessagePack.MsgPackEnum Class: MessagePackLib.MessagePack.MsgPackArray Class: MessagePackLib.MessagePack.MsgPack Class: MessagePackLib.MessagePack.MsgPackType Class: MessagePackLib.MessagePack.ReadTools Class: MessagePackLib.MessagePack.WriteTools Class: MessagePackLib.MessagePack.Zip Class: . ``` # JADX ``` git clone https://github.com/skylot/jadx.git cd jadx ./gradlew dist sudo cp build/jadx/bin/jadx /usr/local/bin/ sudo cp build/jadx/bin/jadx-gui /usr/local/bin/ sudo cp build/jadx/lib/jadx-dev-all.jar /usr/local/lib/ ``` Fedora: ``` sudo dnf install google-noto-sans-cjk-fonts google-noto-serif-cjk-fonts ``` 注意:这对于包含中文/日文/韩文字符的应用程序是必需的。 # Android Studio 从 https://developer.android.com/studio 下载 `android-studio-*-linux.tar.gz`。 ``` sudo dnf install zlib.i686 ncurses-libs.i686 bzip2-libs.i686 sudo tar -xzf android-studio-*-linux.tar.gz -C /opt/ sudo ln -sf /opt/android-studio/bin/studio /usr/local/bin/android-studio ``` ``` echo 'export ANDROID_HOME=$HOME/Android/Sdk' >> ~/.zshrc echo 'export PATH=$PATH:$ANDROID_HOME/platform-tools' >> ~/.zshrc echo 'export PATH=$PATH:$ANDROID_HOME/emulator' >> ~/.zshrc echo 'export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin' >> ~/.zshrc echo 'export PATH=$PATH:$ANDROID_HOME/build-tools/$(ls $ANDROID_HOME/build-tools | tail -1)' >> ~/.zshrc source ~/.zshrc ``` 启动后安装命令行工具: - **More Actions** --> **SDK Manager** --> **SDK Tools** --> **Android SDK Command-line Tools (latest)** ## 启动 ``` android-studio ``` 参考: - https://developer.android.com/studio/install#linux # Apktool ``` git clone https://github.com/iBotPeaches/Apktool cd Apktool ./gradlew build shadowJar proguard sudo cp scripts/osx/apktool /usr/local/bin/ sudo cp brut.apktool/apktool-cli/build/libs/apktool-v2.12.1-27-255a875a-SNAPSHOT.jar /usr/local/bin/apktool.jar ``` 注意:`objection` 需要一个稳定版本: ``` $ objection patchapk -s com.facebook.katana_x86_64.patched.apk No architecture specified. Determining it using `adb`... Detected target device architecture as: x86_64 Using latest Github gadget version: 17.7.3 Remote FridaGadget version is v17.7.3, local is v0. Downloading... Downloading from: https://github.com/frida/frida/releases/download/17.7.3/frida-gadget-17.7.3-android-x86_64.so.xz Downloading x86_64 library to /home/gemesa/.objection/android/x86_64/libfrida-gadget.so.xz... Unpacking /home/gemesa/.objection/android/x86_64/libfrida-gadget.so.xz... Cleaning up downloaded archives... Patcher will be using Gadget version: 17.7.3 Detected apktool version as: v2.12.1-33-0df4f393-SNAPSHOT Traceback (most recent call last): File "/home/gemesa/.local/bin/objection", line 8, in sys.exit(cli()) ~~~^^ File "/home/gemesa/.local/lib/python3.14/site-packages/click/core.py", line 1485, in __call__ return self.main(*args, **kwargs) ~~~~~~~~~^^^^^^^^^^^^^^^^^ File "/home/gemesa/.local/lib/python3.14/site-packages/click/core.py", line 1406, in main rv = self.invoke(ctx) File "/home/gemesa/.local/lib/python3.14/site-packages/click/core.py", line 1873, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ File "/home/gemesa/.local/lib/python3.14/site-packages/click/core.py", line 1269, in invoke return ctx.invoke(self.callback, **ctx.params) ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/gemesa/.local/lib/python3.14/site-packages/click/core.py", line 824, in invoke return callback(*args, **kwargs) File "/home/gemesa/.local/lib/python3.14/site-packages/objection/console/cli.py", line 344, in patchapk patch_android_apk(**locals()) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "/home/gemesa/.local/lib/python3.14/site-packages/objection/commands/mobile_packages.py", line 190, in patch_android_apk if not patcher.is_apktool_ready(): ~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/home/gemesa/.local/lib/python3.14/site-packages/objection/utils/patchers/android.py", line 252, in is_apktool_ready if semver.compare(o, min_version) < 0: ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ File "/home/gemesa/.local/lib/python3.14/site-packages/semver/_deprecated.py", line 81, in wrapper return func(*args, **kwargs) # type: ignore File "/home/gemesa/.local/lib/python3.14/site-packages/semver/_deprecated.py", line 113, in compare return Version.parse(ver1).compare(ver2) ~~~~~~~~~~~~~^^^^^^ File "/home/gemesa/.local/lib/python3.14/site-packages/semver/version.py", line 644, in parse raise ValueError(f"{version} is not valid SemVer string") ValueError: v2.12.1-33-0df4f393-SNAPSHOT is not valid SemVer string Cleaning up temp files... ``` 参考: - https://apktool.org/docs/build # Binwalk ``` git clone https://github.com/ReFirmLabs/binwalk cd binwalk sudo ./build_docker.sh ``` ## 启动 ``` sudo docker run -t -v "$PWD":/analysis binwalkv3 -Me firmware.bin ``` 参考: - https://github.com/ReFirmLabs/binwalk/wiki/Building-A-Binwalk-Docker-Image
标签:AD攻击面, AMSI绕过, Android安全, Bash脚本, Binwalk, DAST, Docker支持, Frida, Ghidra, JS文件枚举, QEMU, Qiling, Rootkit, SIGMA, Suricata, VirtualBox, Wireshark, YARA, Zeek, 云安全监控, 云资产可视化, 云资产清单, 内联执行, 句柄查看, 后台面板检测, 多人体追踪, 威胁检测, 安全工具集, 恶意软件分析, 情报收集, 日志审计, 沙箱, 漏洞研究, 环境搭建, 现代安全运营, 系统分析, 网络分析, 网络安全, 请求拦截, 身份验证强制, 逆向工具, 逆向工程, 配置指南, 隐私保护, 静态分析