R3s1stanc3

Ich bin root, ich darf das!

Perl Crypter

Nach einer etwas längeren Pause kann ich heute mal wieder etwas releasen: einen Crypter in Perl.
Es handelt sich nicht um einen Crypter, der Malware undetected macht, sondern einfach um ein Script, mit dem es möglich ist, Dateien zu ver- bzw entschlüsseln.
Ich hatte an einem neuen Payload gebastelt und dabei mit Crypt::CBC gespielt, dabei ist der Crypter als “Nebenprodukt” entstanden.

Er unterstützt zur Zeit nur Twofish, Blowfish und AES, lässt sich aber einfach in der entsprechenden Abfrage erweitern. Der Rest des Codes sollte selbsterklärend sein.

Perl Crypter (crypter.pl) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/perl

# Crypter by R3s1stanc3 (http://www.r3s1stanc3.co.cc)
# Mail: r3s1stanc3@tormail.org

use Crypt::CBC ;

if ( @ARGV[3] ) { run ( @ARGV[0], @ARGV[1], @ARGV[2], @ARGV[3] ) ; }
else { usage ( ) ; }

sub usage
{
  print "[*] Usage: $0 filename key operation algorithm\n" ;
  print "[-] Operation: dec, enc\n" ;
  print "[-] Algorithm: Twofish, Blowfish, AES\n" ;
}

sub run
{

  $file = $_[0] ;
  $key = $_[1] ;
  $op = $_[2] ;
  $alg = $_[3] ;

  if ( $op eq "dec" || $op eq "enc" ) { $op .= "rypting" ; }
  else
  {
    print "Unknown Operation\n" ;
    usage ( ) ;
    exit ;
  }

  if ( $alg eq "Twofish" || $alg eq "Blowfish" || $alg eq "AES" ) { $crypt = Crypt::CBC -> new ( -key => $key, -crypher => $alg ) ; }
  else
  {
    print "Unknown algorithm\n" ;
    usage ( ) ;
    exit ;
  }

  open ( F, "$file" ) ;
  if ( <F> =~ /ELF/ || $file =~ /\.exe$/ ) { binmode ( F ) ; }
  $crypt -> start ( $op ) ;
  while ( read ( F, $buffer, 1024 ) )
  {
    $file_new .= $crypt -> crypt ( $buffer ) ;
  }
  $file_new .= $crypt -> finish ;
  close ( F ) ;

  open ( file, ">", "$file" ) ;
  print file $file_new ;
  close (file ) ;

  print "Done\n" ;

}