动手编写自己的专属蜜罐(.NET序列之VB.NET)

  • A+
所属分类:安全工具

大家都知道,蜜罐的主要作用是用来迷惑或者诱捕攻击者的攻击行为。

通过蜜罐,我们可以清楚的知道攻击者是如何对我们实施攻击的。

一个好的蜜罐应该具备高度的交互性和真实性,要不然会比较容易被攻击者发现他们在做一些没有意义的事情!


下面,我们通过例子来讲解一个最简单的蜜罐是如何编写出来的(主要是模拟HTTP服务)

代码主要实现:建立一个SOCKET套接字,用于侦听指定端口的数据,然后按着HTTP协议的规范发送报文和实体内容即可!

下面是一个简单的蜜罐编写例子,采用VB.NET语言编写


Button1_Click 按钮事件:创建一个新的线程来启动蜜罐的HTTP服务
StartHttpservice 蜜罐的主要工作过程代码,循环侦听以模拟响应HTTP服务
GetBytes 把字符串转换成二进制数组,在套接字当中所有的数据传输都是以二进制进行的

01 Imports System.Net
02 Imports System.Net.Sockets
03
04 Public Class Form1
05
06 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
07 Dim g As New Threading.Thread(AddressOf StartHttpservice)
08 g.IsBackground = True
09 g.Start()
10 End Sub
11
12 Private Sub StartHttpservice()
13 Dim buffer(4095) As Byte
14 Dim length As Integer
15 Do
16 Dim socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
17 socket.Bind(New IPEndPoint(IPAddress.Loopback, 8080))
18 socket.Listen(100)
19 While True
20 '为当前连接创建一个新的客户端
21 Dim client As Socket = socket.Accept
22 '取得客户端请求数据长度
23 length = client.Receive(buffer, buffer.Length, SocketFlags.None)
24 '打印出客户端的请求HTTP头内容
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>"
28 '定义HTTP响应头报文内容
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("")
35 '向客户端发送HTTP头状态信息
36 client.Send(GetBytes(SendHeads.ToString))
37 '向客户端发送内容部分
38 client.Send(GetBytes(responsebody))
39 '断开当前的客户连接
40 client.Close()
41 Exit While
42 End While
43 socket.Close()
44 Loop
45 End Sub
46
47 Private Function GetBytes(text As String) As Byte()
48 Return System.Text.Encoding.Default.GetBytes(text)
49 End Function
50 End Class

下面是我在浏览器输入蜜罐的地址的测试结果

动手编写自己的专属蜜罐(.NET序列之VB.NET)

动手编写自己的专属蜜罐(.NET序列之VB.NET)

动手编写自己的专属蜜罐(.NET序列之VB.NET)

这样,我们就实现了一个最简单的蜜罐,这个蜜罐可以记录下攻击者发送的请求。

如果我们扩散一下自己的思维,我们可以在本地放一些静态页面,从蜜罐接收的请求当中把路径分离出来用于本地文件的请求,就可以实现一个基本的交互

如果需要高度的交互,又不想自己写太多的代码,则可以在本地建立一个真实的WEB环境。

然后在蜜罐中分离出攻击者的请求URL用于本地的请求获取结果后,返回给攻击者,就可以实现一个真实的WEB动态交互。

由于我不太擅长文字表达太多东西,蜜罐的编写就简单描述到这里!!!

本文始发于微信公众号(T00ls):动手编写自己的专属蜜罐(.NET序列之VB.NET)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: