动手编写自己的专属蜜罐(.NET序列之VB.NET)
大家都知道,蜜罐的主要作用是用来迷惑或者诱捕攻击者的攻击行为。通过蜜罐,我们可以清楚的知道攻击者是如何对我们实施攻击的。 一个好的蜜罐应该具备高度的交互性和真实性,要不然会比较容易被攻击者发现他们在做一些没有意义的事情!下面,我们通过例子来讲解一个最简单的蜜罐是如何编写出来的(主要是模拟HTTP服务)
代码主要实现:建立一个SOCKET套接字,用于侦听指定端口的数据,然后按着HTTP协议的规范发送报文和实体内容即可!
下面是一个简单的蜜罐编写例子,采用VB.NET语言编写
Button1_Click 按钮事件:创建一个新的线程来启动蜜罐的HTTP服务
StartHttpservice 蜜罐的主要工作过程代码,循环侦听以模拟响应HTTP服务
GetBytes 把字符串转换成二进制数组,在套接字当中所有的数据传输都是以二进制进行的下面是我在浏览器输入蜜罐的地址的测试结果
这样,我们就实现了一个最简单的蜜罐,这个蜜罐可以记录下攻击者发送的请求。
如果我们扩散一下自己的思维,我们可以在本地放一些静态页面,从蜜罐接收的请求当中把路径分离出来用于本地文件的请求,就可以实现一个基本的交互
如果需要高度的交互,又不想自己写太多的代码,则可以在本地建立一个真实的WEB环境,然后在蜜罐中分离出攻击者的请求URL用于本地的请求获取结果后,返回给攻击者,就可以实现一个真实的WEB动态交互。
由于我不太擅长文字表达太多东西,蜜罐的编写就简单描述到这里!!!
代码主要实现:建立一个SOCKET套接字,用于侦听指定端口的数据,然后按着HTTP协议的规范发送报文和实体内容即可!
下面是一个简单的蜜罐编写例子,采用VB.NET语言编写
Button1_Click 按钮事件:创建一个新的线程来启动蜜罐的HTTP服务
StartHttpservice 蜜罐的主要工作过程代码,循环侦听以模拟响应HTTP服务
GetBytes 把字符串转换成二进制数组,在套接字当中所有的数据传输都是以二进制进行的
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim g As New Threading.Thread(AddressOf StartHttpservice)
g.IsBackground = True
g.Start()
End Sub
Private Sub StartHttpservice()
Dim buffer(4095) As Byte
Dim length As Integer
Do
Dim socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
socket.Bind(New IPEndPoint(IPAddress.Loopback, 8080))
socket.Listen(100)
While True
'为当前连接创建一个新的客户端
Dim client As Socket = socket.Accept
'取得客户端请求数据长度
length = client.Receive(buffer, buffer.Length, SocketFlags.None)
'打印出客户端的请求HTTP头内容
Debug.Print(System.Text.Encoding.Default.GetString(buffer, 0, length))
'定义回复HTML实体内容,可以根据自己的情况做一些自定义的事情
Dim responsebody As String = "<html><head><title>form socket server</title></head><body><h1>hello,world<br>System Time:" & DateString & " " & TimeString & "</h1></body></html>"
'定义HTTP响应头报文内容
Dim SendHeads As New System.Text.StringBuilder
SendHeads.AppendLine("HTTP/1.1 200 OK")
SendHeads.AppendLine("Content-Type:text/html;charset=UTF-8")
SendHeads.AppendLine("Host:localhost")
SendHeads.AppendLine("Content-Length:" & responsebody.Length)
SendHeads.AppendLine("")
'向客户端发送HTTP头状态信息
client.Send(GetBytes(SendHeads.ToString))
'向客户端发送内容部分
client.Send(GetBytes(responsebody))
'断开当前的客户连接
client.Close()
Exit While
End While
socket.Close()
Loop
End Sub
Private Function GetBytes(text As String) As Byte()
Return System.Text.Encoding.Default.GetBytes(text)
End Function
End Class
这样,我们就实现了一个最简单的蜜罐,这个蜜罐可以记录下攻击者发送的请求。
如果我们扩散一下自己的思维,我们可以在本地放一些静态页面,从蜜罐接收的请求当中把路径分离出来用于本地文件的请求,就可以实现一个基本的交互
如果需要高度的交互,又不想自己写太多的代码,则可以在本地建立一个真实的WEB环境,然后在蜜罐中分离出攻击者的请求URL用于本地的请求获取结果后,返回给攻击者,就可以实现一个真实的WEB动态交互。
由于我不太擅长文字表达太多东西,蜜罐的编写就简单描述到这里!!!
评论9次
有意思啊,snort有过,没用过
Snort, NETCAT, iptables 学xi了。
Honeyd、、、、
用 snort 和 iptables 比较好吧? snort 还可以查看封包 content 查出是否 nmap 的端口扫描
看看学xi了 。。
上次那个寻黑宝,用着还可以
我一直用snort
最简单的办法就是用NETCAT 呵呵
来个t00ls专版吧