系统日志中的 shellshock 攻击是什么样的?

信息安全 日志记录 炮击 脆弱性 重击
2021-08-18 07:56:38

我有一些 Linux 服务器,据我所知,它们不易受到 shellshock 攻击向量的攻击,但我很好奇日志中的攻击是什么样的。appache2 日志中的成功攻击是什么样的?成功的攻击在系统日志中会是什么样子?

失败的尝试是什么样的?我想将我的黑名单扩展到炮弹冲击类型攻击。

4个回答

这是我的 access_log 中我的同事对我的测试机所做的条目...:

10.11.12.13 - - [25/Sep/2014:16:00:00 -0400] "GET /cgi-bin/testing.cgi HTTP/1.0" 200 1 "-" "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/rm -rf /var/www/"    

在我的错误日志中,我看到了很多这样的:

[Thu Sep 25 16:00:00 2014] [error] [client 10.11.12.13] /bin/rm: cannot remove `/var/www/icons/pie0.png': Permission denied

混蛋 :-)

配置良好的 Web 服务器将无法覆盖其日志,并且在除了最小的环境之外的所有环境中,您应该使用集中式日志记录来保护您不丢失这些类型的日志条目。

如果您被成功利用,您可能会在 error_log 中看到许多错误,显示访问资源、执行程序或删除文件的尝试失败。如果他们成功提升权限,并且您没有异地日志记录,那么您可能看不到任何证据。

如果您有一个标准配置的 Apache Web 服务器和一个使用 bash 的 cgi 脚本,那么在以下三种情况下,请求的日志条目可能看起来相同:

  • 提出了合法的请求。
  • 执行成功的攻击。
  • 攻击尝试失败,因为您已升级到bash禁用易受攻击功能的版本。

将合法请求转变为攻击所需的唯一区别是修改其中一个请求标头,该标头被放入环境变量中。

如果User-agent标头用于执行攻击,它将在日志访问日志中非常明显,因为该标头已记录。但是还有其他标头可用于执行攻击,默认情况下不记录这些标头。

bash如果由于已更新到修复错误但仍允许通过环境指定功能的中间版本而导致攻击尝试失败,您将在错误日志中看到警告。它们可能看起来像这样:

[Thu Sep 25 20:46:51.483207 2014] [cgi:error] [pid 26424] [client 10.82.90.125:55631] AH01215: /bin/bash: warning: HTTP_ACCEPT_LANGUAGE: ignoring function definition attempt
[Thu Sep 25 20:46:51.483316 2014] [cgi:error] [pid 26424] [client 10.82.90.125:55631] AH01215: /bin/bash: error importing function definition for `HTTP_ACCEPT_LANGUAGE'

目前你能注意到的最多的事情是探测,扫描随机服务器以寻找可能的攻击向量,因此建议对其进行修补。

可能的“攻击”或至少检查可能看起来有点像这样:

egrep "};|}\s*;" /var/www/logs/access*  xxx.xxx.xxx.xxx - -
[25/Sep/2014:12:12:12 +0100] "GET /cgi-sys/defaultwebpage.cgi
HTTP/1.0" 404 168 "-" "() { :;}; /bin/ping -c 1 xxx.xxx.xxx.xxx"

xxx.xxx.xxx.xxxIP地址在哪里。

我最近看到 Mandiant 的 CISO 发言,当他被问及是否总是存在将攻击者(恶意软件)与有效活动区分开来的行为模式时,他回答说,如果攻击者的行为与有效工作人员完全相同,我们应该感谢他们为我们免费工作。显然,攻击者的行为会在某些方面不同于有效的工人。这意味着如果我们监控系统上的行为/活动,我们应该能够检测是否发生了任何恶意活动。不幸的是,系统日志很可能被高级攻击者篡改,除了发送到 syslog 和所有常用方法之外,您必须以某种方式监视整个系统行为以查找异常情况,而不仅仅是抓取一个日志。对不起,如果这是一个不方便的答案,但 APT 相当不方便......