Autor: Richard Guedes – Gentileza de DCiberBRASIL

El artículo “Educated Manticore: Iran-aligned Threat Actor Targeting Israel Via Enhanced Arsenal of Tools” publicado en 2023 por Check Point Research, informa sobre el descubrimiento de una nueva campaña cibernética llevada a cabo por un grupo de amenazas conocido como “Manticore” y que supuestamente tiene vínculos con el gobierno iraní.

Según el informe, Manticore apunta principalmente a Israel y sus alrededores, con un enfoque en sectores como la aeronáutica, la tecnología y la defensa. Los objetivos incluyen empresas privadas y gubernamentales, así como personas relacionadas con estos sectores.

El informe también revela que Manticore ha mejorado sus capacidades técnicas mediante el uso de técnicas avanzadas de ingeniería social, malware personalizado y la explotación de vulnerabilidades de software para infectar a sus objetivos. Además, el grupo ha utilizado tácticas de evasión para evitar la detección, como orientar sus ataques y utilizar servidores de comando y control distribuidos (C2).

Señuelos descubiertos por Check Point Research

Los investigadores de Check Point señalan que la campaña de Manticore es especialmente preocupante, ya que el grupo es muy sofisticado y está en constante evolución. El informe advierte que es probable que el grupo continúe evolucionando sus tácticas y herramientas, convirtiéndose en una amenaza cada vez más seria y difícil de detectar.

Además, la investigación sugiere que la campaña Manticore es parte de una estrategia más amplia del gobierno iraní para aumentar su presencia cibernética en la región. El informe señala que a medida que se intensifican los conflictos políticos y militares en la región, es probable que las actividades cibernéticas se conviertan en una herramienta cada vez más importante para el gobierno iraní.

El informe de Check Point Research destaca la creciente amenaza que los grupos de amenazas patrocinados por el estado, como Manticore, representan para la seguridad cibernética de Israel y otras naciones de la región. El informe enfatiza la necesidad de una mayor colaboración internacional en la lucha contra estos grupos y destaca la importancia de mantener los sistemas de seguridad actualizados y alertas ante amenazas en constante evolución.

Indicadores de Compromiso

Dominios C&C

subinfralab[.]info

deersharpfork[.]info

blackturtle.hopto[.]org

hashes

Archivo

3e1ed006e120a1afaa49f93b4156a992f8d799b1888ca6202c1098862323c308 29318f46476dc0cfd7b928a2861fea1b761496eb5d6a26040e481c3bd65505 1a 13bab4e32cd6365dba40424d20525cb84b4c6d71d3c5088fe94a6cfe07573e8e 6e842691116c188b823b7692181a428e9255af3516857b9f2eebdeca4638e96e bc8f075c1b3fa54f1d9f4ac622258f3e8a484714521d89aa170246ce04701441 706510916cfc7624ec5d9f9598c95570d48fa8601eecbbae307e0af7618d1460

Archivos PE

e5ba06943abb666f69f757fcd591dd1cceb66cad698fb894d9bc8911282198c4 97a615e69c38db9dffda6be7c11dd27547ce4036a4998a1469fa81b548c6f0b0 e5016d feae 584de20a90f1bef073c862028f410d5b0ae4c074a696b8f8528037 5704bc31061c7ca675bb9d56b9b56a175bf949accf6542999b3a7305af485906 4fcde8ec598 3cf 1465ff7dbcd7d90fcd47d666b0b8352db1dcd311084ed1b3e8 7cc9d887d47f99ca37d2fee6171067df70b4417e96fdb661b9fef697124444cc bdb2a12f2f84c3742 240b8b9e1d6638a73c6b8752aff476051fe33a0bb408010 5d216f5625caf92d224200647147d27bb79e1cff6c8a9fbcac63f321f6bbf02b 62d0b8b5d4281ce107c 4 3d36f222680b0cc85844b8973b645095ccdfb128454d

LNK

1672a14a3e54a127493a2b8257599c5582204846a78521b139b074155003cba4 0f4d309f0145324a6867108bb04a8d5d292e7939223d6d63f44e21a1ce4 5ce4e

potencia Shell

737cb075ba0b5ed6d8901dcd798eecff0bc8585091bc232c54f92df7f9e9e817 cd813d56cf9f2201a2fa69e77fb9acaaa37e64183c708de64cb5cb7c3035a184 c0 de9b9 0a0ac591147d62864264bf00b6ec17c55f7095fdf58923085fe502400 59a4b11b9fb93e3de7c27c25258cec43de38f86f37d88615687ab8402e4ae51e

Apéndice A: secuencia de comandos IDAPython para eliminar la ofuscación de los archivos binarios de Educated Manticore

importar idaapi, idc, idautils

def NopRange ( startEa, endEa ) :

para b en el rango ( startEa, endEa ) :

idc. parche_byte ( b, 0x90 )

def DetectJunkBB ( bb: idaapi. BasicBlock ) :

Contador global de BBJunk

global bbsjunk

para cabeza en idautils. Cabezas ( bb. start_ea , bb. end_ea ) :

if ( idc. get_operand_type ( head, 1 ) == idc. o_imm and ( idc. get_operand_value ( head, 1 ) & 0xffffffff ) == 0x9e3779b9 ) :

BBsJunk. agregar ( bb )

BBJunkCount += 1

para bbSS en bb. éxitos () :

if ( bbSS. inicio_ea == bb. inicio_ea ) :

continúa

if ( not [ SShead for SShead en idautils. Heads ( bbSS. start_ea , bbSS. end_ea ) if idc. print_insn_mnem ( SShead ) == “call” ]) :

BBsJunk. agregar ( bbSS )

BBJunkCount += 1

devolver

BBJunkCount = 0

BBsBasura = []

funciones = idautils. Funciones ()

para funcAddr en funciones:

función = idaapi. get_func ( funcAddr )

fGráfico = idaapi. Diagrama de flujo ( func, Ninguno, idaapi. FC_PREDS | idaapi. FC_NOEXT )

para bb en fChart:

DetectJunkBB ( bb )

para bb en BBsJunk:

NopRange ( bb. start_ea , bb. end_ea )

print ( «BBs limpiados con código basura: %d» % ( BBJunkCount ))

Apéndice B: secuencia de comandos IDAPython para descifrar las cadenas binarias de Educated Manticore

importar idaapi, idc, idautils

# «devolver Falso» en condición: indica que no se rompa el BP, si «devuelve Verdadero», el BP se romperá -> use Falso solo para iniciar sesión

cond= «» «importar idc

RAX = idc.get_reg_value(» rax «)

RIP = idc.get_reg_value(» rasgar «)

decString = idc.get_strlit_contents(RAX,-1, idc.STRTYPE_C16)

si decString == Ninguno:

decString = idc.get_strlit_contents(RAX,-1, idc.STRTYPE_C)

print(“ Cadena descifrada: %s Dirección:0x%x ” % (decString ,RIP))

idc.set_cmt(RIP, str(decString), Falso)

ubicación = RIP

comentario = str(decString)

cfunc = idaapi.decompile(loc)

eamap = cfunc.get_eamap()

decompObjAddr = eamap[ubicación][0].ea

tl = idaapi.treeloc_t()

tl.ea = decompObjAddr

conjunto de comentarios = Falso

para itp en rango (idaapi.ITP_SEMI, idaapi.ITP_COLON):#rango para cubrir diferentes finales – cmts huérfanos

tl.itp = itp

cfunc.set_user_cmt(tl, comentario)

cfunc.save_user_cmts()

no utilizado = cfunc.__str__()

si no cfunc.has_orphan_cmts():

comentarioSet = Verdadero

cfunc.save_user_cmts()

romper

cfunc.del_orphan_cmts()

si no comentario Establecer:

print(» error de pseudo comentario en %08x » % loc)

falso retorno

“ ””

funciones de descifrado = [ 0x14000C650 , 0x14000C770 , 0x14000C890 , 0x14000C9A0 , 0x14000CAC0 , 0x14002B010 , 0x14002B130 , 0x14002B250 , 0x 14002B4F0 , 0x14002B5E0 , 0x14002B700 , 0x140035200 , 0x140035320 ]

para decFunc en decryptionFunctions:

codeRefs = idautils. CodeRefsTo ( decFunc, 1 )

para ref en codeRefs:

ea = idc. siguiente_cabeza ( ref )

idaapi. add_bpt ( ea, 0 , idaapi. BPT_SOFT )

bpt = idaapi. bpt_t ()

idaapi. get_bpt ( ea, bpt )

bpt. elang = ‘Pitón’

bpt. condición = condición

idaapi. actualización_bpt ( bpt )

Fuente: https://dciber.org/grupo-de-hackers-iranianos-visa-israel-com-ataques-de-phishing-aprimorados/