วันจันทร์ที่ 29 กรกฎาคม พ.ศ. 2556

สคิป Bot Boom


ท่องเน็ตอยู่นาน เนื่องจากว่างจัด เลยจัด Google ค้นหาคำว่า Perl Bot Boom เลยไปเจอ Bot ของท่านๆ หนึ่งเขียนไว้ ไม่รู้ว่าของใคร เลยเอามาแปะไว้ที่บล๊อคนี่ละ สำหรับใครที่อยากได้ Bot สำหรับทำวิจัย หรือ อะไรก็ตามแต่ (ไม่รู้ว่า เอาไปใช้ไรกันมั้ง)

    #!/usr/bin/perl
    use strict;
    use warnings;
    use IO::Socket;
    use LWP::UserAgent;
    use Encode;
    #ตั้งค่าบอท
    my $server = "irc.pong-host.com"; #เซิฟเวอร์ IRC นะครับ
    my $login = "Boom_Bot";  #username นะแหละ
    my $owner = "Bongtrop"; #ชื่อเจ้าของเอาไว้สั่งครับ
    my $channel = "#Bongtrop";  #ห้องของห้อง
    my $shell="http://103.22.180.158/bot_boom.php";
    my $nick;
    my $pid=fork();
    my $thr=0;
    #เชื่อมต่อ
    my $sock = new IO::Socket::INET(PeerAddr => $server,
                                    PeerPort => 6667,
                                    Proto => 'tcp') or
                                        die "ไม่สามารถเชื่อมต่อได้\n";
    if ($pid) {
            $nick="BotBoom_Command";
    }
    elsif ($pid==0) {
            $nick="BotBoom_Run";
    }  else {
            print $sock "PRIVMSG ",$channel," :[-] MultiProcress Error\r\n";
    }
    my $ua = LWP::UserAgent->new();
    $ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4");
    #function Save LOG
    sub saveLOG {
            open LOG,">>log.txt";
            (my $str,my $own)=@_;
            if ($str eq "START") {
                    $str="Procress in ".localtime." by ".$own."\n";
            }
            elsif ($str eq "END") {
                    $str="------------------------END PROCRESS------------------------\n\n";
            }
            $str = encode("utf-8", decode("tis-620", $str));
            print LOG $str;
            close LOG;
    }
    my $firstID;
    #function SMF
    sub smf {
            saveLOG("START","Bot");
            my $url="http://picpost.mthai.com/category/sexy-girl";
            print $sock "PRIVMSG ",$channel," : 7[+] เริ่มทำการดึงจากเว็บ $url\r\n";
            saveLOG("[+] เริ่มทำการดึงจากเว็บ $url\n");
            my $respone=$ua->get($url);
           
            my @line=split(/\n/,$respone->content);
            my $c=0;
            foreach (@line) {
                    if ((my $id)=$_=~/<h4><a href=\"\/view\/(.*)\" title=/) {
                            my $lastid;
                            open INFILE,"id.txt";
                            while (<INFILE>) {
                                    chomp;
                                    $lastid=$_;
                            }
                            close INFILE;
                            if ($lastid eq $id) {
                                    print $sock "PRIVMSG ",$channel," : 4[-] ไม่พบหัวข้อ Picpost ใหม่ฮะ\r\n";
                                    saveLOG ("[-] ไม่พบหัวข้อ Picpost ใหม่ฮะ\n","Bot");
                                    last;
                            }
                            if ($c==0) {
                                    open OUTFILE,">id.txt";
                                    print OUTFILE $id;
                                    close OUTFILE;
                            }
                            $url="http://picpost.mthai.com/view/".$id;
                            $respone=$ua->get($url);
                            my ($subject)=$respone->content=~/<title>(.*) \| picpost/;
                            my @line2=split(/\n/,$respone->content);
                            my $outsj = encode("tis-620", decode("utf-8", $subject));
                            print $sock "PRIVMSG ",$channel," : 7[-] พบหัวข้อ Picpost $outsj ไอดี $id\r\n";
                            saveLOG ("[-] พบหัวข้อ Picpost $outsj ไอดี $id\n","Bot");
                            my $body="<center>";
                            foreach (@line2) {
                                    if ((my $pic)=$_=~/<a href=\"\/pic\/$id\/(.*)\" class=\"fullsize\"/) {
                                            $body.='<img src="http://picpost.mthai.com/pic/'.$id.'/'.$pic.'"><br>';
                                    }
                            }
                            $body.='</center>';
                            if ($subject=~/Page not found/ or $subject eq "" or $body eq "" or $body=~/Page not found/) {
                                    print $sock "PRIVMSG ",$channel," : 4[-] เว็บ Mthai มีปัญหาเลยลามมาหากระปมเลย ><\r\n";
                                    saveLOG ("[-] เว็บ เดลินิวมีปัญหาเลยลามมาหากระปม ><\n","Bot");
                                    last;
                            }
                            $respone = $ua->post($shell,["subject"=>$subject,"body"=>$body,"idBoard"=>3]);
                            print $sock "PRIVMSG ",$channel," : 7[+] อัพโหลดสู่ SMF ".$respone->content."\r\n";
                            saveLOG ("[+] อัพโหลดสู่ SMF ".$respone->content."\n","Bot");
                            $c++;
                    }
            }
            print $sock "PRIVMSG ",$channel," : 7[+] รอสักครู่จะรันอีกทีนะฮะ ทำเรื่อยๆเดียวโดนบ๊อก\r\n";
            saveLOG ("[+] รอสักครู่จะรันอีกทีนะฮะ ทำเรื่อยๆเดียวโดนบ๊อก\n","Bot");
            saveLOG ("END","Bot");
    }
    print $sock "NICK $nick\r\n";
    print $sock "USER $login 8 * :I'm botSMF\r\n";
    while (my $input = <$sock>) {
        if ($input =~ /004/) {
            last;
        }
        elsif ($input =~ /433/) {
            die " 4[-] ชื่อถูกใช้ไปแล้ว";
        }
    }
    #เข้าสู่ห้อง
    print $sock "JOIN $channel\r\n";
    my $count=0;
    if ($pid) {
            while (my $input = <$sock>) {
                    chop $input;
                    chop $input;
                    #ส่งค่ากลับเมื่อมีการ ping มา จาก server
                    if ($input=~/PING/) {
                            (my $pong)=$input=~m/PING (.*)/;
                            print $sock 'PONG '.$pong." : \r\n";
                            if ($thr==1 and $count>10) {
                                    $count=0;
                                    print $sock "PRIVMSG ",$channel," : 12[+] กำลังเริ่มสั่งให้มันรัน อาจจะสั่งงานไม่ได้ซัก 2-5 วินาที รอแปปนะ\r\n";
                                    sleep 3;
                                    print $sock "PRIVMSG ",$channel," :9qcp34iwfipoj230cjaesff323r0ijasdfj2r0irskfjasv\r\n";
                            }
                            $count++;
                    }
                    if ($input=~/^\:$owner\!/ or $input=~/^\:thejestei2\!/) {
                            (my $own)=$input=~/^\:(.*)\!/;
                            saveLOG("START",$own);
                            saveLOG($input."\n",$own);
                            saveLOG("END",$own);
                            if ($input=~/ปิดระบบ/) {
                                    print $sock "PRIVMSG ",$channel," : 4[-] เริ่มทำการปิดระบบ\r\n";
                                    kill 'KILL' => $pid;
                                    last;
                            }
                            if ($input=~/ทดสอบ/) {
                                    print $sock "PRIVMSG ",$channel," : 3เรียบร้อยทุกอย่างฮะ >< \r\n";
                            }
                            if ($input=~/ถอย/) {
                                    $thr=0;
                                    print $sock "PRIVMSG ",$channel," : 4[-] สั่งให้บอทหยุดดึงเรียบร้อยแล้วฮะ \r\n";
                            }
                            if ($input=~/กี่cแล้ววะแม้ง/) {
                                    print $sock "PRIVMSG ",$channel," : 4[!] อย่าพึ่งโกรธสิฮะ ตอนนี้ $count c แล้วฮะจักกะแปปป\r\n";
                            }
                            if ($input=~/คำสั่ง/) {
                                    print $sock "PRIVMSG ",$channel," : 12[+] มีคำสั่ง 6 คำสั่ง\r\n";
                                    print $sock "PRIVMSG ",$channel," : \r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 1) ลุย ใช้เริ่มทำงาน\r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 2) สถานะ ตรวจสอบสถานะ Bot\r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 4) ไอดี ใช้ตรวจสอบไอดีล่าสุดของข่าว\r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 5) แก้ไอดี ใช้สำหรับแก้ไขไอดีล่าสุดของข่าว\r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 5) ถอย ใช้หยุดการทำงาน Bot ไม่ให้ดึงข่าว\r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 6) ล๊อก ใช้สำหรับเช๊คล๊อกว่ามะอะไรเปลี่ยนแปลงไปบ่าง\r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 7) ลบล๊อก ใช้สำหรับเคลียล๊อกที่ผ่านมา\r\n";
                                    print $sock "PRIVMSG ",$channel," : 3 8) ปิดระบบ ใช้ออกจาก IRC\r\n";
                            }
                            if ($input=~/ลุย/) {
                                    print $sock "PRIVMSG ",$channel," :9qcp34iwfipoj230cjaesff323r0ijasdfj2r0irskfjasv\r\n";
                                    print $sock "PRIVMSG ",$channel," : 12[+] สั่งงาน BotSMF_Run เรียบร้อยแล้ว\r\n";
                                    $thr=1;
                            }
                            if ($input=~/ลบล๊อก/) {
                                    unlink("log.txt");
                                    print $sock "PRIVMSG ",$channel," : 12[+] ลบล๊อกสำเร็จแล้วฮะ ><\r\n";
                            }
                            elsif ($input=~/ล๊อก/) {
                                    print $sock "PRIVMSG ",$channel," : 12[+] ไฟย์ล๊อก ก็ ไฟย์ log.txt ดูด้านข้าง";
                            }
                            if ($input=~/สถานะ/) {
                                    if ($thr==0) {
                                            print $sock "PRIVMSG ",$channel," : 4[-] Bot ยังไม่ได้เริ่มทำงาน\r\n";
                                    } else {
                                            print $sock "PRIVMSG ",$channel," : 12[+] Bot กำลังทำงานอยู่\r\n";
                                    }
                            }
                            if ((my $idedit)=$input=~/แก้ไอดีเป็น (.*)/) {
                                    open OUTFILE,">id.txt";
                                    print OUTFILE $idedit;
                                    close OUTFILE;
                                    print $sock "PRIVMSG ",$channel," : 12[+] ทำการแก้ไอดีเป็น $idedit เสร็จแล้ว\r\n";
                            }
                            elsif ($input=~/ไอดี/) {
                                    open INFILE,"id.txt";
                                    my $sid;
                                    while (<INFILE>) {
                                            $sid=$_;
                                    }
                                    close INFILE;
                                    print $sock "PRIVMSG ",$channel," : 12[+] ไอดีล่าสุดคือ $sid\r\n";
                            }
                    }
            }
    }
    elsif ($pid==0) {
            while (my $input = <$sock>) {
                    chop $input;
                    chop $input;
                    if ($input=~/PING/) {
                            (my $pong)=$input=~m/PING (.*)/;
                            print $sock 'PONG '.$pong." : \r\n";
                    }
                    if ($input=~/^\:BotBoom_Command\!/) {
                            if ($input=~/9qcp34iwfipoj230cjaesff323r0ijasdfj2r0irskfjasv/) {
                                    smf();
                            }
                    }
            }
    } else {
            print $sock "PRIVMSG ",$channel," : 4[-] MultiProcress Error\r\n";
    }

ของใครก็ไม่รู้ ลิงค์นี้ละ http://pastebin.com/2PEetqQq

วันเสาร์ที่ 27 กรกฎาคม พ.ศ. 2556

กลโกง Hacker Web ตอนที่ 2




    กลโกงของ Hacker ในการ Hack เว็บ นั้นมีอยู่มากมาย จนนับไม่ถ้วน จะมีอยู่มากที่ Hack ด้วยด้วยความรู้ของตนเอง และ เข้าใจในหลักการ ของ Hack Tool และยังมีอีกมากกว่า ที่ใช้ Hack tool แต่ไม่รู้ว่ามันทำงานยังไง

    เรื่องนั้นช่างมันก่อน วันนี้ผมจะมาพูดถึงเรื่องการ Hack เข้าดูโค้ด HTML หน้าเว็บ ที่เขาไม่เปิดดู งงละสิ อย่างเพิ่ง งง ยกตัวอย่างเช่นเว็บ http://www.animegx.net เว็บ ของคุณท๊อป นั้นเอง เว็บของเขานั้นป้องกันมาดี ทั้งไม่สามารถเปิดดู Code HTML ได้ ไม่สามารถ SQL injection ได้ Index?=html ก็ไม่ได้ java script ก็มิอาจจะระคายเขาได้ UDP Flood , TCP Flood ก็ยากจะเข้าถึง

    แต่ว่า ที่ผมจะพูดก็คือ การเปิดดูหน้า Html Code ซึ่งก่อนหน้านี้ มีไอ้บ้าที่ใหนไม่รู้ดันไปก๊อป โค้ดเขามาใส่เว็บตัวเอง ซะเหมือน เว็บต้นฉบับเป๊ะ แต่ว่าเราำม่พูดถึง เพราะไม่เกี่ยวกับเราเท่าไร ซึ่งพอเกิดเหตุการณ์ที่ว่า ทาง Animegx ได้ยัดโค้ด ห้ามคลิ๊กขวาในเว็บของเขา ถ้า ยศไม่ถึง (ใช่เปล่าไม่รู้นะ ว่าเขาทำมาป้องกัน Hacker รึเปล่า)

   ทุกๆอย่างที่คุณท๊อปทำมา ทำเอาเหล่า Hacker ปวดหัวไปตามๆกัน เพราะ หาช่องโหว่ไม่ค่อยจะเจอ แถมพวก Hacker ที่คอยจะโจมตีเว็บเขา (ทำไปทำไมวะ)

   ผมจะยก Code Perl ที่ใช้สำหรับ ดูโค้ด HTML มาให้ จะเอาไปดัดแปลงหรือ ไปทำอะไรก็ไป เพราะต่อจากนี้ผมจะเขียนวิธีป้องกันด้วย

#!/usr/bin/Perl

use LWP::UserAgent;
$agent = LWP::UserAgent->new;
$url = "http://www.animegx.net";
$response = $agent->get($url);
$agent->proxy("http","http://127.0.0.1:8080");
print $response->content;

   ในภาษา Perl มันมี โมคูล LWP ที่เชื่อมต่อกับ โปรโตคอล HTTP ได้ง่าย การทำงานของมันเริ่มจากดึงโมคูล LWP เข้ามาใช้ แล้วสร้าง ออบเจ็กต์ LWP::UserAgent เก็บไว้ในตัวแปร $agent บรรทัดต่อไปเป็นการ กำหนดตัวแปร $use หรือก็คือ ชื่อของเว็บไซต์ URL ที่ต้องการให้ โค้ดดึงข้อมูลของเว็บ

   $response = $agent->get($url); บรรทัดนี้จะเป็นการเรียกร้องขอข้อมูลแบบ GET ไปยัง เซิฟเวอร์ แล้วเก็บผลหรือเอกสาร HTML ที่เซิร์ฟเวอร์ส่งกลับมาไว้ยังตัวแปร $response จากนั้นก็แสดงข้อมูลที่อยู่ในตัวแปร $response ออกทางจอภาพด้วยคำสั่ง print $response->content;

   คำสั่ง $agent->proxy("http","http://127.0.0.1:8080"); จะเป็นการกำหนดค่า Proxy ของออบเจ็คต์ $agent ว่าให้ไปใช้ Proxy หมายเลข 127.0.0.1 พอร์ต 8080

ซึ่งมาในทางการป้องกัน กรณี Apache ให้ใช้ mod_rewrite โดยในเรกทีฟ <Directory> ของ Document Root ให้เพิ่มคำสั่งนี้เข้าไป

Options FollowSymLinks
rewriteEngine on
rewriteCond %{REQUEST_FILENAME} !-D
rewriteCond %{REQUEST_FILENAME} !-f
rewriteRule . /index.html

การกระทำแบบนี้ จะทำให้ได้ผลเหมือนกับการกำหนด ErrorDocument 404/index.html ทุกอย่างครับ เพียงแต่ในกรณีข้อมูลที่ร้องขอไม่มี แทนที่รหัสในบรรทัดสถานะตอบกลับจะเป็น 404 Not Found แต่จะเป็น 200 OK แทน ป้องกันได้เปล่าหว่าช่างเหอะ

กลโกง Hacker Web ตอนที่ 1

 ในบทความนี้ ผมจะมาพูดเกี่ยวกับ กลโกงของ Hacker ทั้งหลาย ที่อยู่ในระดับที่เป็นปัญหา นั้นก็คือ พวก Hacker ฝึกหัดทั้งหลาย

     ผมก็เคยเป็นแบบนั้น เพียงแต่ว่า พอมาสร้างเว็บแล้วก็รู้ทันทีเลยว่า Hacker เหล่านั้นเป็นปัญหาอย่างมาก (คันไม้คันมือ ไม่มีที่ลอง) Hacker มือใหม่ที่อยากลองวิชาก็ไปหา Hack ชาวบ้านเขาให้เดือดร้อนไปตามๆกัน หรือจะแค่อวดว่า "ตูก็ Hack ได้นะโว้ย" ใครที่คันไม้คันมืออยาก Hack หรือ อยากลองวิชา ก็เชิญได้ที่ http://try2hack.siamdev.net/index.php
     จะเป็นด่านไว้ทดสอบความสามารถและจัดระดับ Hacker (ไอ้ตัวเรานั้น ก็มีคะแนน แค่ 30 ไม่มีเวลาเข้าไปเล่นสักที TT^TT )
     เอาละ แพล่มมาพอแล้ว เรามาดูกลโกง ของ Hacker ตั้งแต่ Basic ไปจนถึง basic (เอ๊ ยังไงวะ) ไม่ต้อง งง ที่ว่ามา หมายถึง เราต้องเข้าใจในระดับที่เราต้องเข้าใจก่อน ค่อยไปในระดับต่อๆ ไป
    กลโกง Hack Web 1 : พื้นฐานสำคัญนั้นก็คือ สอดส่อง ให้ทะลุ (แห่มชอบจริง เรื่องสอดๆส่องๆนี่) สำหรับ Hacker เมื่อเจอ เว็บที่ต้องการ Hack แล้ว จะทำการสำรวจ โครงสร้างของหน้านั้นๆ ว่ามีอะไร เก็บไว้บ้าง ส่งข้อมูลไปที่ใหน ตารางใหน เก็บข้อมูลอะไร ช่องโหว่มีอะไร มุดตรงใหนได้บ้าง ซึ่งผมใช้ Google Crome และ FrieFox จะดูก็ง่ายๆ แค่คลิ๊กขวา และ กด ดูซอร์ตโค้ด แค่นี้ก็สามารถดูได้แล้ว
   กลโกง Hack Web 2 : ลางสังหร์และความรู้ที่มีเพียงน้อยนิด (น้อยนิดนี่มันของเรานี่หว่า) Hacker หลังจากที่เห็นโครงสร้างของหน้านันๆ แล้วก็จะทำการ เดา (เดาแบบมีหลักการ) เริ่มจากลองตรงนั้นก่อน ตรงนี้ก่อน กดนั้นมันจะไปโผล่ใหน กดนี่มันจะเป็นอะไร แล้ว ลิงค์นี้มันเก็บอะไรไว้
    กลโกง Hack Web 3 : ตรงนี้คือส่วนสำคัญ (แล้วตรงใหนไม่สำคัญวะ) นั้นก็คือการที่เรารู้ว่า เว็บนี้มีปัญหาอะไร ช่องโหว่อะไรแล้ว เราก็สามารถ ถล่ม เฮ้ย ส่องเว็บ ได้ Hacker เมื่อรู้ว่าเว็บของเรานั้นมีช่องโหว่ ก็จะทำการใช้ ช่องโหว่นั้น โจมตี เว็บของเรา การ Hack นั้นไม่ตายตัว แล้วแต่ Hacker นั้นจะถนัดอะไร บ้างก็ใช้ Javascript โจมตีเพื่อหา Cookie หรือ Usename Admin รวมไปถึงการ ล้วงข้อมูลในเซิฟเวอร์
   กลโกง Hack Web 4 : ตรงนี้ไม่มีอะไรมาก ถ้าพวกที่ใช้ Hack Tool แต่ไม่อยากรู้อะไรก็ข้ามๆไปเถอะ กลโกง ในข้อนี้ เป็นที่นิยมกันอย่างมาก ของ Hacker ในระดับที่ต่ำ ไปจนถึงระดับ สูง นั้นก็คือ การ สร้าง Back Door มีชื่อเรียกต่างกัน ไม่ว่าจะเป็น ประตูลับ ประตูผี ประตูหลัง (ใช่หรอวะ ประตูหลัง) ไม่ว่าจะชื่ออะไรก็ตาม ความสามารถของมันก็คล้ายๆ กัน นั้นก็คือ การสร้าง ทางเข้าสู่ เซิฟเวอร์แบบลับๆ เพื่อเข้าไป ดูดข้อมูล หรือ เปลี่ยนแปลงข้อูลตามใจชอบ เทคนิคนี้ จะมีหลายๆแบบ เช่นการ อัพโหลด Shell เข้าเซิฟ (ใครที่ตามอ่านบทความของผมก็จะรู้ว่า เคยพูดกันมาแล้ว) โดย อาศัยการ บั๊ก ของ YaBB SE เข้าไปสำรวจภายในของแอคเคานต์    โดย Hacker จะเรียกเอาสคิป PHP ไปรันเข้าเซิฟเวอร์ จากภายนอก ร้ายแรงกว่านั้นคือ การฝังไฟล์ File Manager เข้าเซิฟ ทีนี้เข้าก็จะสามารถควบคุมเว็บของคุฯได้แล้ว

   ในบทความนี้ก็จะพูดถึงเท่านี้ละ (เหนื่อย) เดียวโดดงานจาก Studio ตอนใหนก็จะมาเขียนตอนที่สองกัน
    สำหรับใครที่จะติดต่อผม หรือ เข้าไปเกรียนผม ก็สามารถไปกด ไลล์ที่ เพจ :https://www.facebook.com/KissshotStudio ได้เลยนะครับ