segunda-feira, 29 de maio de 2023

inBINcible Writeup - Golang Binary Reversing

This file is an 32bits elf binary, compiled from go language (i guess ... coded by @nibble_ds ;)
The binary has some debugging symbols, which is very helpful to locate the functions and api calls.

GO source functions:
-  main.main
-  main.function.001

If the binary is executed with no params, it prints "Nope!", the bad guy message.

~/ncn$ ./inbincible 
Nope!

Decompiling the main.main function I saw two things:

1. The Argument validation: Only one 16 bytes long argument is needed, otherwise the execution is finished.

2. The key IF, the decision to dexor and print byte by byte the "Nope!" string OR dexor and print "Yeah!"


The incoming channel will determine the final message.


Dexor and print each byte of the "Nope!" message.


This IF, checks 16 times if the go channel reception value is 0x01, in this case the app show the "Yeah!" message.

Go channels are a kind of thread-safe queue, a channel_send is like a push, and channel_receive is like a pop.

If we fake this IF the 16 times, we got the "Yeah!" message:

(gdb) b *0x8049118
(gdb) commands
>set {char *}0xf7edeef3 = 0x01
>c
>end

(gdb) r 1234567890123456
tarting program: /home/sha0/ncn/inbincible 1234567890123456
...
Yeah!


Ok, but the problem is not in main.main, is main.function.001 who must sent the 0x01 via channel.
This function xors byte by byte the input "1234567890123456" with a byte array xor key, and is compared with another byte array.

=> 0x8049456:       xor    %ebp,%ecx
This xor,  encode the argument with a key byte by byte

The xor key can be dumped from memory but I prefer to use this macro:

(gdb) b *0x8049456
(gdb) commands
>i r  ecx
>c
>end
(gdb) c

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x12 18

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x45 69

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x33 51

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x87 135

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x65 101

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x12 18

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x45 69

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x33 51

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x87 135

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x65 101

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x12 18

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x45 69

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x33 51

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x87 135

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x65 101

Breakpoint 2, 0x08049456 in main.func ()
ecx            0x12 18

The result of the xor will compared with another array byte,  each byte matched, a 0x01 will be sent.

The cmp of the xored argument byte,
will determine if the channel send 0 or 1


(gdb) b *0x0804946a
(gdb) commands
>i r al
>c
>end

At this point we have the byte array used to xor the argument, and the byte array to be compared with, if we provide an input that xored with the first byte array gets the second byte array, the code will send 0x01 by the channel the 16 times.


Now web have:

xorKey=[0x12,0x45,0x33,0x87,0x65,0x12,0x45,0x33,0x87,0x65,0x12,0x45,0x33,0x87,0x65,0x12]

mustGive=[0x55,0x75,0x44,0xb6,0x0b,0x33,0x06,0x03,0xe9,0x02,0x60,0x71,0x47,0xb2,0x44,0x33]


Xor is reversible, then we can get the input needed to dexor to the expected values in order to send 0x1 bytes through the go channel.

>>> x=''
>>> for i in range(len(xorKey)):
...     x+= chr(xorKey[i] ^ mustGive[i])
... 
>>> print x

G0w1n!C0ngr4t5!!


And that's the key :) let's try it:

~/ncn$ ./inbincible 'G0w1n!C0ngr4t5!!'
Yeah!

Got it!! thanx @nibble_ds for this funny crackme, programmed in the great go language. I'm also a golang lover.


Related articles
  1. Hacking Tools Kit
  2. Hacking Tools Windows
  3. Growth Hacker Tools
  4. Hack Tools Download
  5. Termux Hacking Tools 2019
  6. Hacking Tools For Beginners
  7. Pentest Tools For Android
  8. Install Pentest Tools Ubuntu
  9. Pentest Tools Alternative
  10. Hacker Tools Mac
  11. Hacking Tools For Beginners
  12. Hacker Tools For Mac
  13. Hacking Tools Kit
  14. Hacking App
  15. Best Pentesting Tools 2018
  16. Hack Tools For Windows
  17. Hacker Tools Apk Download
  18. Beginner Hacker Tools
  19. How To Hack
  20. Hack Tools For Windows
  21. Pentest Tools Github
  22. Underground Hacker Sites
  23. Hack Tools Github
  24. Hacking Tools Mac
  25. Hack Tools Github
  26. Hacker Techniques Tools And Incident Handling
  27. Beginner Hacker Tools
  28. Pentest Tools Website Vulnerability
  29. Pentest Tools Open Source
  30. Hacker Search Tools
  31. New Hacker Tools
  32. Pentest Recon Tools
  33. Hack Tools For Mac
  34. Hack Website Online Tool
  35. Tools For Hacker
  36. Hacking Tools For Windows 7
  37. Nsa Hack Tools
  38. Hackers Toolbox
  39. Nsa Hack Tools Download
  40. What Is Hacking Tools
  41. Pentest Tools Find Subdomains
  42. Hacking Tools Usb
  43. Free Pentest Tools For Windows
  44. New Hack Tools
  45. How To Install Pentest Tools In Ubuntu
  46. Pentest Tools Nmap
  47. Hacker Techniques Tools And Incident Handling
  48. Hack Tools Download
  49. Hack Website Online Tool
  50. Hack And Tools
  51. Hack Tools For Pc
  52. Hack Tools Download
  53. Hack Tools 2019
  54. Hacker Tools Online
  55. Pentest Tools Website
  56. What Is Hacking Tools
  57. Pentest Tools Subdomain
  58. Hack Tools Online
  59. Hacker Security Tools
  60. Pentest Tools Alternative
  61. Hacking Tools Windows
  62. Hacker Tools List
  63. Pentest Box Tools Download
  64. Hack Rom Tools
  65. Pentest Tools Alternative
  66. Black Hat Hacker Tools
  67. Pentest Reporting Tools
  68. Hack Tools Mac
  69. How To Hack
  70. Hacking Tools Download
  71. Pentest Tools Website
  72. Usb Pentest Tools
  73. Pentest Tools Tcp Port Scanner
  74. Pentest Tools For Windows
  75. Kik Hack Tools
  76. What Is Hacking Tools
  77. Kik Hack Tools
  78. Hacking Tools Usb
  79. Hacking Tools Pc
  80. Tools Used For Hacking
  81. Blackhat Hacker Tools
  82. Pentest Tools Open Source
  83. What Is Hacking Tools
  84. Pentest Tools For Mac
  85. Best Pentesting Tools 2018
  86. Pentest Tools Website
  87. New Hacker Tools
  88. Hacker Tools For Pc
  89. Hacking Tools For Games
  90. Hacking Tools For Windows
  91. Blackhat Hacker Tools
  92. Hacking Tools And Software
  93. New Hack Tools
  94. How To Install Pentest Tools In Ubuntu
  95. Hacking Tools Hardware
  96. Hack Tools
  97. Hacking Tools For Pc
  98. Pentest Tools Download
  99. Hacker Tools Free Download
  100. Pentest Tools Windows
  101. Hack Tools Mac
  102. Hack Tools For Ubuntu
  103. Hacker Techniques Tools And Incident Handling
  104. Hacking Tools Kit
  105. Hacking Tools For Mac
  106. Pentest Tools For Mac
  107. Game Hacking
  108. Hack Tools For Mac
  109. Pentest Tools Apk
  110. Hacker Tools Apk
  111. Pentest Tools Tcp Port Scanner
  112. Hack Tools For Ubuntu
  113. Wifi Hacker Tools For Windows
  114. Pentest Reporting Tools
  115. Hack Tools
  116. Hacking Tools Name
  117. Hacking Tools For Mac
  118. Hack Tools For Windows

BurpSuite Introduction & Installation



What is BurpSuite?
Burp Suite is a Java based Web Penetration Testing framework. It has become an industry standard suite of tools used by information security professionals. Burp Suite helps you identify vulnerabilities and verify attack vectors that are affecting web applications. Because of its popularity and breadth as well as depth of features, we have created this useful page as a collection of Burp Suite knowledge and information.

In its simplest form, Burp Suite can be classified as an Interception Proxy. While browsing their target application, a penetration tester can configure their internet browser to route traffic through the Burp Suite proxy server. Burp Suite then acts as a (sort of) Man In The Middle by capturing and analyzing each request to and from the target web application so that they can be analyzed.











Everyone has their favorite security tools, but when it comes to mobile and web applications I've always found myself looking BurpSuite . It always seems to have everything I need and for folks just getting started with web application testing it can be a challenge putting all of the pieces together. I'm just going to go through the installation to paint a good picture of how to get it up quickly.

BurpSuite is freely available with everything you need to get started and when you're ready to cut the leash, the professional version has some handy tools that can make the whole process a little bit easier. I'll also go through how to install FoxyProxy which makes it much easier to change your proxy setup, but we'll get into that a little later.

Requirements and assumptions:

Mozilla Firefox 3.1 or Later Knowledge of Firefox Add-ons and installation The Java Runtime Environment installed

Download BurpSuite from http://portswigger.net/burp/download.htmland make a note of where you save it.

on for Firefox from   https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/


If this is your first time running the JAR file, it may take a minute or two to load, so be patient and wait.


Video for setup and installation.




You need to install compatible version of java , So that you can run BurpSuite.

Related news


  1. Hacker Tools Apk Download
  2. Pentest Tools Website
  3. Hack Tools For Mac
  4. Tools For Hacker
  5. Hacking Tools Usb
  6. Hacking Tools For Pc
  7. Hacker Tools Apk
  8. Hacking Tools For Windows 7
  9. Hacking Tools Windows 10
  10. Bluetooth Hacking Tools Kali
  11. Hack Tools
  12. Hacking Tools Windows
  13. Hacking Tools Github
  14. Hack Tools For Windows
  15. Pentest Tools For Mac
  16. Hacker Tools For Ios
  17. Hack Tools
  18. Hack Tools Online
  19. Pentest Tools For Ubuntu
  20. Pentest Tools Download
  21. Best Hacking Tools 2019
  22. Hacker Tools For Mac
  23. World No 1 Hacker Software
  24. Tools 4 Hack
  25. Hack Tools For Mac
  26. Pentest Tools Url Fuzzer
  27. Tools 4 Hack
  28. Pentest Tools
  29. What Are Hacking Tools
  30. Hacker Tools Free
  31. Hacker Tools Free Download
  32. Best Hacking Tools 2020
  33. Pentest Tools Linux
  34. Hacker Tools
  35. Android Hack Tools Github
  36. Hack Tools
  37. Pentest Tools Alternative
  38. Tools 4 Hack
  39. Pentest Reporting Tools
  40. Hack Tools For Pc
  41. Bluetooth Hacking Tools Kali
  42. Android Hack Tools Github
  43. Hack And Tools
  44. Pentest Tools Port Scanner
  45. Hacking Tools
  46. Hacker Tools Github
  47. Hacking Tools Github
  48. Hacking Tools Name
  49. Hacker Tools Free Download
  50. Hacker Tools Free
  51. Usb Pentest Tools
  52. Hacking Apps
  53. Hacking Tools For Kali Linux
  54. Hacker Tools Free
  55. Pentest Tools For Windows
  56. Hacks And Tools
  57. Pentest Tools Open Source
  58. New Hacker Tools
  59. Hacker Security Tools

domingo, 28 de maio de 2023

Ask And You Shall Receive



I get emails from readers asking for specific malware samples and thought I would make a mini post about it.

Yes, I often obtain samples from various sources for my own research.

 I am sometimes too lazy/busy to post them but don't mind sharing.
If you are looking for a particular sample, feel free to ask. I might have it.

Send MD5 (several or few samples). I cannot provide hundreds/thousands of samples or any kind of feeds. If you ask for a particular family, I might be able to help if I already have it.

Unfortunately, I do not have time to do homework for students and provide very specific sets for malware with specific features as well as guarantee the C2s are still active.  Send your MD5(s) or at least malware family and I check if I have it :) If i have it, I will either send you or will post on the blog where you can download.

If you emailed me in the past and never got an answer, please remind me. Sometimes emails are long with many questions and I flag them to reply to later, when I have time and they get buried or I forget. It does not happen very often but accept my apologies if it happened to you.

Before you ask, check if it is already available via Contagio or Contagio Mobile.
1. Search the blog using the search box on the right side
2. Search here https://www.mediafire.com/folder/b8xxm22zrrqm4/BADINFECT
3. Search here https://www.mediafire.com/folder/c2az029ch6cke/TRAFFIC_PATTERNS_COLLECTION
4. Search here https://www.mediafire.com/folder/78npy8h7h0g9y/MOBILEMALWARE

Cheers,  Mila

Related posts


TryHackMe: EasyPeasy CTF Writeup

Download Memory Map

References:

Related news


eWPT - Web Application Penetration



 The eWPT - Web Application Penetration Testing Professional course from the popular eLearnSecurity Institute and INE is an advanced web penetration testing course. Prerequisites for this course Completion of the eJPT courseIs. The eWPT course is one of the most popular courses in the field of web penetration testing or web hacking. This course is usually compared to the AWAE course from Offensive-Security and the SEC542 course from SANS. This course starts from a complete beginner in the field of web penetration testing and its topics continue to an advanced level. In this course you will gain an in-depth understanding of OWASP, Burpsuite software, complete web application analysis, data collection, common bugs such as XSS and SQL Injection, Session-based vulnerabilities, as well as LFI / RFI, attacks On HTML, content management systems (CMS) penetration testing such as WordPress, penetration testing of SQL and non-SQL databases. 


Course pre requisites

Completion of the eJPT course
Course specifications
Course level: Intermediate
Time: 16 hours and 18 minutes
Includes: ‌ 30 videos | 18 labs | ‌ 15 slides
Professor: Dimitrios Bougioukas
EWPT Course Content - Web Application Penetration Testing Professional
Web Application Penetration Testing
Penetration Testing Process
Introduction
Information Gathering
Cross Site Scripting
SQL Injections
Authentication and Authorization
Session Security
Flash
HTML5
File and Resources Attacks
Other Attacks
Web Services
XPath
Penetration Testing Content Management Systems
Penetration Testing NoSQL Databases

Related posts


sábado, 27 de maio de 2023

Reversing C++ String And QString

After the rust string overview of its internal substructures, let's see if c++ QString storage is more light, but first we'r going to take a look to the c++ standard string object:



At first sight we can see the allocation and deallocation created by the clang++ compiler, and the DAT_00400d34 is the string.

If we use same algorithm than the rust code but in c++:



We have a different decompilation layout. Note that the Ghidra scans very fast the c++ binaries, and with rust binaries gets crazy for a while.
Locating main is also very simple in a c++ compiled binary, indeed is more  low-level than rust.


The byte array is initialized with a simply move instruction:
        00400c4b 48 b8 68        MOV        RAX,0x6f77206f6c6c6568

And basic_string generates the string, in the case of rust this was carazy endless set of calls, detected by ghidra as a runtime, but nevertheless the basic_string is an external imported function not included on the binary.

(gdb) x/x 0x7fffffffe1d0
0x7fffffffe1d0: 0xffffe1e0            low str ptr
0x7fffffffe1d4: 0x00007fff           hight str ptr
0x7fffffffe1d8: 0x0000000b        sz
0x7fffffffe1dc: 0x00000000
0x7fffffffe1e0: 0x6c6c6568         "hello world"
0x7fffffffe1e4: 0x6f77206f
0x7fffffffe1e8: 0x00646c72
0x7fffffffe1ec: 0x00000000        null terminated
(gdb) x/s 0x7fffffffe1e0
0x7fffffffe1e0: "hello world"

The string is on the stack, and it's very curious to see what happens if there are two followed strings like these:

  auto s = string(cstr);
  string s2 = "test";

Clang puts toguether both stack strings:
[ptr1][sz1][string1][null][string2][null][ptr2][sz2]

C++ QString datatype

Let's see the great and featured QString object defined on qstring.cpp and qstring.h

Some QString methods use the QCharRef class whose definition is below:

class Q_EXPORT QCharRef {     friend class QString;     QString& s;     uint p;
 
 Searching for the properties on the QString class I've realized that one improvement that  rust and golang does is the separation from properties and methods, so in the large QString class the methods are  hidden among the hundreds of methods, but basically the storage is a QStringData *;

After removing the methods of QStringData class definition we have this:

struct Q_EXPORT QStringData : public QShared {
    QChar *unicode;
    char *ascii;
#ifdef Q_OS_MAC9
    uint len;
#else
    uint len : 30;