USECase, blog y trabajo relacionado de Qiling
Qiling es un marco avanzado de emulación binaria, con las siguientes características:
- Emular multiplataformas: Windows, MacOS, Linux, Android, BSD, UEFI, DOS, MBR, Ethereum Virtual Machine
- Emulado Multi-Architecturas: 8086, x86, x86_64, Arm, Arm64, MIPS, RISCV, PowerPC
- Admite múltiples formatos de archivo: PE, Macho, Elf, COM, MBR
- Soporte de Windows Driver (.sys), Linux Kernel Module (.KO) y MacOS Kernel (.Kext) a través de Demigod
- Emula y código de sandbox en un entorno aislado
- Proporciona un sandbox totalmente configurable
- Proporciona API de memoria, registro, nivel del sistema operativo y del sistema de archivos en profundidad
- Instrumentación de grano fino: permite ganchos en varios niveles (instrucción/bloque básico/memoria-access/excepción/syscall/io/etc)
- Proporciona API de nivel de máquina virtual, como guardar y restaurar el estado de ejecución actual
- Admite capacidades de arquitectura cruzada y depuración de plataformas
- Debugger incorporado con capacidad de depuración inversa
- Permite el código de ejecución dinámico de Hotpatch On the-Fly, incluida la biblioteca cargada
- Verdadero marco en Python, lo que facilita la creación de herramientas de análisis de seguridad personalizadas en la parte superior
Qiling también llegó a varias conferencias internacionales.
2022:
- Sombrero negro, EU
- Sombrero negro, mea
2021:
- Sombrero negro, EE. UU.
- Hack en la caja, Amsterdam
- Sombrero negro, Asia
2020:
- Sombrero negro, Europa
- Sombrero negro, EE. UU.
- Hat negro, EE. UU. (Demigod)
- Sombrero negro, Asia
- Hacke en el cuadro, Lockdown 001
- Hacke en el cuadro, Lockdown 002
- Hack en la caja, Cyberweek
- Nullcon
2019:
- Defcon, EE. UU.
- Hitcon
- Zeronights
Qiling está respaldado por unicornio motor.
Visite nuestro sitio web https://www.qiling.io para obtener más información.
Licencia
Este proyecto se lanzó y distribuye bajo la Licencia de software gratuita GPLV2 y la versión posterior.
Qiling vs otros emuladores
Hay muchos emuladores de código abierto, pero dos proyectos más cercanos a Qiling son UserMode Unicornio y QEMU. Esta sección explica las principales diferencias de Qiling contra ellos.
Qiling Vs Unicorn Motor
Construido sobre unicornio, pero Qiling & Unicornio son dos animales diferentes.
- Unicorn es solo un emulador de CPU, por lo que se centra en emular las instrucciones de la CPU, que pueden comprender la memoria del emulador. Más allá de eso, Unicornio no es consciente de conceptos de nivel superior, como bibliotecas dinámicas, llamadas al sistema, manejo de E/S o formatos ejecutables como PE, Macho o ELF. Como resultado, Unicornio solo puede emular las instrucciones de la máquina sin procesar, sin contexto del sistema operativo (OS)
- Qiling está diseñado como un marco de nivel superior, que aprovecha el Unicornio para emular las instrucciones de la CPU, pero puede comprender el sistema operativo: tiene cargadores de formato ejecutables (para PE, Macho & Elf en este momento), enlazadores dinámicos (para que podamos cargar y reubicar bibliotecas compartidas), manipuladores SYSCALL & IO. Por esta razón, Qiling puede ejecutar binario ejecutable sin requerir su sistema operativo nativo
Qiling vs Qemu Usermode
QEMU USERMODE hace algo similar a nuestro emulador, es decir, emular a todos los binarios ejecutables de la manera inter-arquitectura. Sin embargo, Qiling ofrece algunas diferencias importantes contra el USERMODE QEMU.
- Qiling es un verdadero marco de análisis que le permite construir sus propias herramientas de análisis dinámico en la parte superior (en lenguaje amigable de Python). Mientras tanto, QEMU es solo una herramienta, no un marco
- Qiling puede realizar una instrumentación dinámica e incluso puede hacer un código de hotpatch en tiempo de ejecución. Qemu tampoco lo hace
- No solo que funcione la arquitectura cruzada, Qiling también es multiplataforma, por lo que, por ejemplo, puede ejecutar el archivo Linux ELF en la parte superior de Windows. Por el contrario, QEMU usermode solo ejecuta binario del mismo sistema operativo, como Linux Elf en Linux, debido a la forma en que reenvía Syscall del código emulado al sistema operativo nativo
- Qiling admite más plataformas, incluyendo Windows, MacOS, Linux y BSD. QEMU USERMODE solo puede manejar Linux y BSD
Instalación
Consulte el archivo de la Guía de configuración sobre cómo instalar Qiling Framework.
Ejemplos
- El siguiente ejemplo muestra cómo utilizar el marco Qiling de la manera más estriética de emular un ejecutable de Windows.
from qiling import Qiling
if __name__ == "__main__" :
# initialize Qiling instance, specifying the executable to emulate and the emulated system root.
# note that the current working directory is assumed to be Qiling home
ql = Qiling ([ r'examples/rootfs/x86_windows/bin/x86_hello.exe' ], r'examples/rootfs/x86_windows' )
# start emulation
ql . run ()- El siguiente ejemplo muestra cómo un crackme de Windows puede parcarse dinámicamente para que siempre muestre el cuadro de diálogo de "felicitación".
from qiling import Qiling
def force_call_dialog_func ( ql : Qiling ):
# get DialogFunc address from current stack frame
lpDialogFunc = ql . stack_read ( - 8 )
# setup stack memory for DialogFunc
ql . stack_push ( 0 )
ql . stack_push ( 1001 ) # IDS_APPNAME
ql . stack_push ( 0x111 ) # WM_COMMAND
ql . stack_push ( 0 )
# push return address
ql . stack_push ( 0x0401018 )
# resume emulation from DialogFunc address
ql . arch . regs . eip = lpDialogFunc
if __name__ == "__main__" :
# initialize Qiling instance
ql = Qiling ([ r'rootfs/x86_windows/bin/Easy_CrackMe.exe' ], r'rootfs/x86_windows' )
# NOP out some code
ql . patch ( 0x004010B5 , b' x90 x90 ' )
ql . patch ( 0x004010CD , b' x90 x90 ' )
ql . patch ( 0x0040110B , b' x90 x90 ' )
ql . patch ( 0x00401112 , b' x90 x90 ' )
# hook at an address with a callback
ql . hook_address ( force_call_dialog_func , 0x00401016 )
ql . run () El siguiente video de YouTube muestra cómo funciona el ejemplo anterior.
Firmware de enrutador del brazo emulador en la máquina Ubuntu X64
- Qiling Framework Hot-Patch y emula el enrutador del brazo/usr/bin/httpd en un x86_64bit Ubuntu

El complemento Idapro de Qiling: instrumento y descifrar el secreto de Mirai
- Este video demuestra cómo el complemento Idapro de Qiling capaz de hacer que Idapro se ejecute con el motor de instrumentación Qiling
Gdbserver con demo de Idapro
- Resolver un desafío CTF simple con Qiling Framework e Idapro
Emulando MBR
- El marco Qiling emula MBR

QlTool
Qiling también proporciona una herramienta amigable llamada qltool para emular rápidamente los binarios de shellcode y ejecutables.
Con QLTool, se puede realizar una ejecución fácil:
Con shellcode:
$ ./qltool code --os linux --arch arm --format hex -f examples/shellcodes/linarm32_tcp_reverse_shell.hex
Con archivo binario:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --rootfs examples/rootfs/x8664_linux/
Con Binary y GDB Depugger Enable:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --gdb 127.0.0.1:9999 --rootfs examples/rootfs/x8664_linux
Con colección de cobertura de código (UEFI solo por ahora):
$ ./qltool run -f examples/rootfs/x8664_efi/bin/TcgPlatformSetupPolicy --rootfs examples/rootfs/x8664_efi --coverage-format drcov --coverage-file TcgPlatformSetupPolicy.cov
Con salida JSON (Windows principalmente):
$ ./qltool run -f examples/rootfs/x86_windows/bin/x86_hello.exe --rootfs examples/rootfs/x86_windows/ --console False --json
Contacto
Obtenga la información más reciente de nuestro sitio web https://www.qiling.io
Contáctenos al correo electrónico [email protected], o a través de Twitter @qiling_io o weibo
Desarrolladores centrales, contribuyentes clave y etc.
Consulte Credits.md