记录从 Windows 发送到 Mac 的 SSH 命令

记录从 Windows 发送到 Mac 的 SSH 命令

我有点困惑——我既是 Windows 10 机器的管理员,也是 Mac Catalina 机器的管理员。

Windows 计算机当前运行的软件存在已知错误 - SSH 命令由大量 .NET 软件发送到 Mac,而该软件很难通过 SSH 进行 RE(主要是因为其大小而非复杂性)。这两台 PC 位于同一网络上。

SSH 命令失败,但我不知道它们是什么。我想记录这些操作,或者至少以某种方式查看它们,这样我就可以更改接收端 (Mac) 的行为以采取正确的操作(错误解决方法)。

以下是我尝试查看的 SSH 命令:

  • 跑步Wireshark(双方)尝试通过 SSH 密钥解码 Diffie-Hellman 交换(我不知道这究竟是如何工作的,所以我摸索着前进 - 例如,我不知道如何使用 RSA 密钥来解码对话)
  • 尝试斯特拉斯- 在 Mac 机器上不存在。备选方案桁架可能有效,但我不知道命令,必须绕过 SIP。
  • 尝试使用以下方法记录 SSH 命令.bashrc自动记录 - 现在已被取代.zprofile.zshrc- 这似乎不起作用,z_history 或 bash_history 中没有留下任何历史记录。不过,当我运行交互式终端命令时,它可以工作。这可能是由于命令链接到初始 SSH 命令,例如 ssh user@host SOMECOMMAND。
  • 跑步进程监控,看看这些命令是否在某个秘密配置文件中。似乎找不到它。
  • 使用反编译反射器dnSpy- 我发现了一些关于如何传输 SSH 命令的逻辑,但没有硬编码的实际命令。

我错过了什么? 是否有一些我忽略的明显方法可以做到这一点?

我比较擅长让事情顺利进行,所以如果我知道最好的前进道路,我就会把注意力集中在那里。似乎在很大的空间里有太多的选择,不知道该怎么做。

我读到过可能有一些方法可以通过 SSH 主机(Mac)上的 sshd_config 来执行此操作,但我不知道哪些设置实际上会起作用,而且显然 Mac 以一种特殊的方式执行操作。

[请随意移动适当的 StackExchange 站点,不确定哪个最适合]

答案1

这看起来像是审计的典型案例。我没有在 Mac OS 上配置它的经验,因此参考了一些文档和示例:

https://opensource.apple.com/source/OpenBSM/OpenBSM-21/openbsm/man/

https://krypted.com/mac-os-x/quick-dirty-openbsm-auditing-macos/

看起来还有一种类型auditd可用:

https://opensource.apple.com/source/system_cmds/system_cmds-336.10/auditd.tproj/auditd.8.auto.html

启用审计和解析日志应该可以工作并包含在目标系统上执行的所有命令。

例如,了解 ssh 用户后,您可以开始audit_user配置ex要为该特定用户记录的系统调用。如果在会话期间更改了用户,它可能无法捕获所有内容,但至少可以捕获到用户切换命令。

/etc/security/audit_user yoursshuser:ad,ex:no

为了快速开始,尝试类似auditreduce -u <userid> -c ex /dev/auditpipe | praudit

这应该提供来自用户exec系统调用的实时日志。

建议忘记通过 shell 历史记录等方法的任何方法,因为您不知道是否使用了 shell。例如,脚本被复制过来,shell 只是切换了。有趣的是ex系统调用,它们包含所有执行,无论它们是如何触发的。


编辑 Mac:特别是对于 Mac(启用系统完整性保护 [SIP],例如 Catalina/El Capitan/等),OpenBSM 不会记录不会导致实际执行程序的 bash 命令。

如果你想记录不正确的命令(例如 ASDFASDFASDF),那么最好的选择似乎是使用dtruss-dtrace 也可能有效,但让它正常工作的难度似乎更高。

首先,禁用 SIP,然后运行以下命令来记录 bash 进程的所有系统调用:

sudo dtruss -n bash

在 stat64 调用中,将在各种环境位置“搜索”不正确的命令。例如stat64("/usr/bin/ASDFASDFASDF",...)

答案2

如果您有权访问执行命令的 shell,则可以尝试将 shell 配置文件中的文件描述符重定向到日志文件。或者打开历史记录。或者使用 sysdig。

相关内容