使用奇怪字符攻击网络服务器

使用奇怪字符攻击网络服务器

不幸的是,我太新手了,无法寻找这个问题的答案,甚至不知道如何正确地表述它,因为我不知道我在看什么。

这是我在 nginx access.log 中看到的内容。显然,我可以找出 IP 地址和日期。但 \x 后面的参数并不总是十六进制。或者这是 unicode 表示和实际 ASCII 字符的混合?

显然,nginx 认为这是无稽之谈(格式错误的返回代码)。但我想知道发生了什么。所有 IP 地址都是用于 ISP 的,因此我无法真正阻止它们,因为它们是动态的。

68.197.228.104 - - [07/Aug/2016:06:41:41 +0000] "\x9F\x00\x00\x00B\xF3Z\xC7\xDB\xC9b\xC7\xDD=\xE2\xB4m0+\x9E\xA8\x1E\xC5)Z\xDD\xFAD=}\x9E\xE1!\xBA\xE0\xFB\xA0\xA0Z|\xC1K\xBA\xC1\xD1\xD8\xA7\x8C\xD47YrG\xB0\xB4C\x1Fo\x80\xD8\x15\x088\x1B4\xBE\x02z7\x85s\x9753\xA2M\xAC\x22\x5C\x04{4F\x87[\xFD\x17\xFCE\x82}~\x99z\x9D\x87T\xA1\xBB\x89\x8F\xF7/\xD9\xB7g\xF2\x14/\xC7x\xDC\xBElg\xF50\x06;\xE0'\xF3|\xF6\xAD\xBB\x87\xE0\xE2\x8F\x12\x8C\x8B'*\xF6c\xB5\xC9D\xF1\x1Ay!\xAA\xC8\xDA\xEF\xFA\xDEw\x08g\x9B\x1A$<`\x93!~ ^" 400 173 "-" "-"

172.56.30.114 - - [07/Aug/2016:08:55:36 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x034\xA9\x06\x18\xAE\x96 \x0F\xDD\xAA7\x05\x16\xCA\xE9\xE0A69\xE7P\xAB\xCC\xEFB\xBB)yQ\xFE\x00\x00\xA8\x00\x05\x00\x04\x00\x15\x00\x16\x003\x009\x00:\x00\x1A\x00\x18\x005\x00\x09\x00" 400 173 "-" "-"

我正在取消回答我的答案。虽然那所大学是这些字符的来源,但如果你检查 IP 地址,它显然不是唯一的来源。这是来自 nginx access.log 的新条目

75.120.80.102 - - [17/Aug/2016:17:56:54 +0000] "\x9F\x00\x00\x00B\xF3Z\xC7\xDB\xC9b\xC7\xDD=\xE2\xB4m0+\x9E\xA8\x1E\xC
5)Z\xDD\xFAD=}\x9E\xE1!\xBA\xE0\xFB\xA0\xA0Z|\xC1K\xBA\xC1\xD1\xD8\xA7\x8C\xD47YrG\xB0\xB4C\x1Fo\x80\xD8\x15\x088\x1B4
\xBE\x02z7\x85s\x9753\xA2M\xAC\x22\x5C\x04{4F\x87[\xFD\x17\xFCE\x82}~\x99z\x9D\x87T\xA1\xBB\x89\x8F\xF7/\xD9\xB7g\xF2\
x14/\xC7x\xDC\xBElg\xF50\x06;\xE0'\xF3|\xF6\xAD\xBB\x87\xE0\xE2\x8F\x12\x8C\x8B'*\xF6c\xB5\xC9D\xF1\x1Ay!\xAA\xC8\xDA\
xEF\xFA\xDEw\x08g\x9B\x1A$<`\x93!~ ^" 400 173 "-" "-"

这很有趣。请注意在无意义字符之前对 ipip.net 的请求。它得到了 444(回复是第一个参数),因为它触发了我放入 nginx 的一些代码,尽管我不太确定它为什么会出现,因为我不会中继请求。

444 139.162.13.205 - - [26/Aug/2016:12:04:52 +0000] "GET http://clientapi.ipip.net/echo.php?info=20160826200452 HTTP/1
.1" 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64)" "-"

400 139.162.13.205 - - [26/Aug/2016:12:04:53 +0000] "\x00\x9C\x00\x01\x1A+<M\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x
00\x01\x00\x00\x00\x01\x00\x00" 173 "-" "-" "-"

400 139.162.13.205 - - [26/Aug/2016:12:04:53 +0000] "\x05\x02\x00\x02" 173 "-" "-" "-"

400 139.162.13.205 - - [26/Aug/2016:12:05:04 +0000] "\x04\x01\x1F\x00\x00\x00\x00\x00\x00" 173 "-" "-" "-"

答案1

这是标准 ASCII 字符和十六进制编码字符的混合。例如,在第一个请求的开头,\x00B是空字节和 ASCII B。这样做的目的是以某种方式对请求进行编码,使服务器上的保护软件无法检测到攻击。

答案2

亚琛工业大学互联网扫描研究

好的,问题解决了。

“我可以请求排除我的服务器吗?要让您的主机或网络免受亚琛工业大学未来扫描的影响,请联系[电子邮件保护]与您的 IP 地址或 CIDR 块。或者,您可以将防火墙配置为丢弃来自我们用于扫描的子网的流量:137.226.113.0/24。”

全文见链接。这是一个所谓的研究项目。

答案3

您可以在fail2ban中添加规则来减少这些复杂的攻击字符串。

请看我的回答:

https://stackoverflow.com/questions/46254721/regex-for-detecting-complex-attack-strings-on-web-sites

相关内容