大家都知道,蜜罐的主要作用是用来迷惑或者诱捕攻击者的攻击行为。
通过蜜罐,我们可以清楚的知道攻击者是如何对我们实施攻击的。
一个好的蜜罐应该具备高度的交互性和真实性,要不然会比较容易被攻击者发现他们在做一些没有意义的事情!
下面,我们通过例子来讲解一个最简单的蜜罐是如何编写出来的(主要是模拟HTTP服务)
代码主要实现:建立一个SOCKET套接字,用于侦听指定端口的数据,然后按着HTTP协议的规范发送报文和实体内容即可!
下面是一个简单的蜜罐编写例子,采用VB.NET语言编写
Button1_Click 按钮事件:创建一个新的线程来启动蜜罐的HTTP服务
StartHttpservice 蜜罐的主要工作过程代码,循环侦听以模拟响应HTTP服务
GetBytes 把字符串转换成二进制数组,在套接字当中所有的数据传输都是以二进制进行的
02 |
Imports System.Net.Sockets |
06 |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click |
07 |
Dim g As New Threading.Thread(AddressOf StartHttpservice) |
12 |
Private Sub StartHttpservice() |
13 |
Dim buffer(4095) As Byte |
16 |
Dim socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) |
17 |
socket.Bind(New IPEndPoint(IPAddress.Loopback, 8080)) |
21 |
Dim client As Socket = socket.Accept |
23 |
length = client.Receive(buffer, buffer.Length, SocketFlags.None) |
25 |
Debug.Print(System.Text.Encoding.Default.GetString(buffer, 0, length)) |
26 |
'定义回复HTML实体内容,可以根据自己的情况做一些自定义的事情 |
27 |
Dim responsebody As String = "<html><head><title>form socket server</title></head><body><h1>hello,worldSystem Time:" & DateString & " " & TimeString & "</h1></body></html>" |
29 |
Dim SendHeads As New System.Text.StringBuilder |
30 |
SendHeads.AppendLine("HTTP/1.1 200 OK") |
31 |
SendHeads.AppendLine("Content-Type:text/html;charset=UTF-8") |
32 |
SendHeads.AppendLine("Host:localhost") |
33 |
SendHeads.AppendLine("Content-Length:" & responsebody.Length) |
34 |
SendHeads.AppendLine("") |
36 |
client.Send(GetBytes(SendHeads.ToString)) |
38 |
client.Send(GetBytes(responsebody)) |
47 |
Private Function GetBytes(text As String) As Byte() |
48 |
Return System.Text.Encoding.Default.GetBytes(text) |
下面是我在浏览器输入蜜罐的地址的测试结果
![动手编写自己的专属蜜罐(.NET序列之VB.NET) 动手编写自己的专属蜜罐(.NET序列之VB.NET)]()
![动手编写自己的专属蜜罐(.NET序列之VB.NET) 动手编写自己的专属蜜罐(.NET序列之VB.NET)]()
![动手编写自己的专属蜜罐(.NET序列之VB.NET) 动手编写自己的专属蜜罐(.NET序列之VB.NET)]()
这样,我们就实现了一个最简单的蜜罐,这个蜜罐可以记录下攻击者发送的请求。
如果我们扩散一下自己的思维,我们可以在本地放一些静态页面,从蜜罐接收的请求当中把路径分离出来用于本地文件的请求,就可以实现一个基本的交互
如果需要高度的交互,又不想自己写太多的代码,则可以在本地建立一个真实的WEB环境。
然后在蜜罐中分离出攻击者的请求URL用于本地的请求获取结果后,返回给攻击者,就可以实现一个真实的WEB动态交互。
由于我不太擅长文字表达太多东西,蜜罐的编写就简单描述到这里!!!
本文始发于微信公众号(T00ls):动手编写自己的专属蜜罐(.NET序列之VB.NET)
评论