反扫描可视化
威胁情报可视化,一直以来对安全人员分析安全事件起着有益的作用, 可视化是对分析的结
果一种图形化的映射,是威胁行为的一种图形具象化。
针对蜜罐日志分析的流程来讲,溯源和展示攻击行为本身也是很重要的。
一般比较传统的日志分析方式是:
蜜罐向类似mysql这种库中写入被访问的IP地址和Port,启动定时任
务读取数据库,取出数据库当条目总数,与之前本地保存的最大数进行比较 发现,数据库
中的日志记录变多了,就将这些数据取出,进行分析和报警。
另一种方式是依赖ips,ids这种设备,对网段内的所有蜜罐的流量进行监控,发现有任何
触发蜜罐的访问就进行数据的报警分析,不好的地方是,除了要依赖这些设备 ,ids和ids
本身对蜜罐被访问策略控制比较单一,另外如果想进一步的想取得访问的payload也需要与ids
,ips再次交互取,不同产商的设备特点不统一。
还有一种方案是,除了构建蜜网之外,再构建一个日志中心(ES集群+Openresty)
一方面可以通过在设备上加agent把数据传回日志中心,另一方面日志中心本身也是一个REST
网关,接受多种 形志的日志推送,这个方案是有构建成本 ...
Nginx+Lua返回JSON类型数据
作者:糖果
Nginx返回JSON数据,一种是直接在配置文件里设置,一种是通过Lua代码封装完成,讲Nginx中执行Lua返回JSON的关键,一个用API函数ngx.say,同时配合json.encode对JSON格式的字符串进行编码,然后设定响应头信息的类型。
Nginx Conf中返回JSON的方式
location /json/ {
default_type application/json;
add_header Content-Type 'text/html; charset=utf-8';
return 200 '{"about":"糖果的Lua教程,"sites":"lua.ren"}';
}
Nginx Lua返回JSON的方式
三步操作:
1.设置HTTP的响应头信息:
ngx.header['Content-Type'] = 'application/json; charset=utf-8'
2.json.encode(“Lua的Table型变量”):
json = require ...
Blues框架如何取得请求者的Rquest信息
Blues框架如何取得请求者的Rquest信息
在request.lua下引用nginx.lua这个lazytable库。
local params = require "nginx"
function Request:getInstance()
local name = "request"
local instance = {
url="/request",
getName = function()
lp("CRequest!")
end
}
instance.uri = "candy lab"
instance.params = params
setmetatable(instance, { __index ...
如何读取request的body数据
作者:糖果
我们通过curl向openresty服务器端请求rest,采用GET请求方式,提交一个json,然后路由到对应的匿名函数,通过request.params.body直接取得json数据主体,解析成table变量,放回渲染。
下面:
curl -X GET http://0.0.0.0/blues -d '{"key":"value"}'
app:get("/blues", function(request,id)
local ret = request.params.body
local json = require "cjson"
local util = require "cjson.util"
local t = json.decode(ret)
ngx.say(util.serialise_value(t))
return ret
end)
结果:
{
["key"] ...
函数返回的结果是函数的返回的结果不是函数
函数返回的结果是函数的返回的结果不是函数
function read(self)
print("key:"..self.key)
end
enable = function(func)
self = {key='value'}
local fn = func
if type(fn) == "function" then
return fn(self)
end
end
enable(read)
function test()
print("test")
return true
end
params = function(func)
if func == false then
return function() print('params error') end
end
return function(request, id)
print("request")
end
end
ret = p ...
如何在Openresty中实现一个REST服务
作者:糖果
使用Blues框架在Openresty中实现一个REST服务解析和返回JSON数据,并通过curl向openresty服务器端请求rest,采用GET请求方式,提交一个json,然后路由到对应的匿名函数,通过request.params.body直接取得json数据主体,解析成table变量,放回渲染。
下面:
1-1.接口测试
通过CURL调用我们将要实现的REST接口:
curl -X GET http://0.0.0.0/blues -d '{"key":"value"}'
在app.lua加入如下函数:
1-2.接口实现(案A)
app.lua
app:get("/blues", function(request,id)
--读取用户请求中的body数据
local ret = request.params.body
--调用cjso库
local json = require "cjson"
loca ...
Lua的Table的成员函数声明中的形参self
作者:糖果
Lua函数声明中的形参self
Lua中有两种对Table结构的成员函数声明方式:“:“和”.”。
而对table的函数成员表量的调用也是这两种方试。
允许的:
第一种:用".“声明函数,用”:"调用用函数。函数调用时lua会把table变量本身做为第一个参数,传给这个被调用的函数。
第二种:用".“声明函数,用”.“调用用函数。再用”."执行table的函数,函数默认不会为这个函数,第一个实参传入self参数。 这里的self不一定要叫self,可以声明为任何的变量名。
local tbl = {a=1}
function tbl.test(self)
print("tbl.test")
print(type(self))
for k,v in pairs(self) do
print(k,v)
end
end
tbl:test()
function tbl.test1(params)
print("tbl.test1")
print(typ ...
xml-sitemaps.com自动生成网站sitemap
xml-sitemaps.com自动生成网站sitemap,之前这网站是,根据数库后台数生成sitemap.xml和sitemap.html. 这种方式很自动化,但有没有一种工具,可以不通过自己写的代码,直接在前台输入网站地址就会生成相应的文件呢,有就是www.xml-sitemaps.com,可以看一下http://lua.ren/sitemap.html
Openresty OOM 臭虫
Openresty OOM 臭虫
最近我在线上改变了一个的 Nginx 配置,导致 OOM(Out of Memory) killer 在 Nginx 加载新配置的过程中 杀死了 Nginx 进程。这是添加到配置中的行:
lua_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;
在这篇文章中,我将会阐述我是如何找出这个问题的根本原因、记录在这个过程中现学现用的工具。这篇文章内容细节非常琐碎。在进行深入阅读前,先列下使用的软件栈:
Openssl 1.0.2j
OS:Ubuntu Trusty with Linux 3.19.0-80-generic
Nginx:Openresty bundle 1.11.2
glibc:Ubuntu EGLIBC 2.19-0ubuntu6.9
我们从 OOM Killer 开始。它是一个 Linux 内核函数,当内核不能分配更多的内存空间的时候它将会被触发。OOM Killer 的任务是探测哪一个进程是对系统危害最大(参考 https://linux-mm. ...
TMUX最常用操作命令
作者:糖果
一般情况下,当你用SSH链接VPS,然后关掉terminal的操作窗口时,所有的当前操作都结束了。而如果用TMUX,当前正在运行的非后台操作会话还会存在,下面是TMUX最常用的操作了。
1.创建新会话
tmux new -s candylab
2.选择新会话
tmux attach -t candylab
3.显示会话列表
tmux ls
4.翻页
Ctrl + b + (PageUp PageDown)
5.退出当前tmux会话
Ctrl + b + d是退出当前会话,但是用tmux ls盾,这个会话,还是会存在的,如果exit命令,当前的tmux会话就彻底结束了,tmux ls中也少了当前的会话。
6.上下分屏
Ctrl + b + %
7.左右分屏
Ctrl + b + “
8.重命名当前会话
Ctrl + b + $ 重命名session
糖果实验室