elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Temas
Páginas: [1]
1  Seguridad Informática / Análisis y Diseño de Malware / [MASM][SRC] ¿Puede este codigo burlar a los AV's? en: 11 Julio 2013, 00:18 am
Hola amigos, un dia estaba programando en ASM (aun estoy empezando), y se me ocurrio la idea de programar un downloader y dejarlo FUD, pero ahi surgio la pregunta ¿como lo ago?

Entonces pense: "¡Puedo llamar a las API's de forma dinamica!". Como saben las unicas API's que se necesitan son 2: LoadLibrary y GetProcAddress asi que escribi esto:

Código:
.386                 ; create 32 bit code
.model flat, stdcall

;;;;; Importar Kernel32 y sus funciones

include     \masm32\include\kernel32.inc
includelib  \masm32\lib\kernel32.lib

.data

USER32  db  "User32",0
Message db  "MessageBoxA",0

.code
   start:
     PUSH offset USER32
     CALL LoadLibrary
     PUSH offset Message
     PUSH EAX
     CALL GetProcAddress

     PUSH 0
     PUSH offset USER32    ;Titulo del mensaje
     PUSH offset USER32    ;Texto del mensaje
     PUSH 0
     CALL EAX
   end start

pero me di cuenta que cuando un AV analize el archivo, se dara cuenta de las cadenas ASCII y si encuentra un patrón de funciones sospechosas pues es mas que seguro que lo detectara como una amenaza.
Fue ahi donde pense que si dejo la variable llena de caracteres al azar y compilo el programa, al abrirlo con un editor hexadecimal puedo ver la cadena que yo escribi, asi que puedo modificarla a placer y al ser ejecutada la variable tomara el valor que yo le asigne con el editor hexadecimal.

bueno a esto me refiero:

Código:
.386                 ; create 32 bit code
.model flat, stdcall

;;;;; Importar Kernel32 y sus funciones

include     \masm32\include\kernel32.inc
includelib  \masm32\lib\kernel32.lib

.data

USER32  db  "666666",0
Message db  "11111111111",0

.code
   start:
     PUSH offset USER32
     CALL LoadLibrary
     PUSH offset Message
     PUSH EAX
     CALL GetProcAddress

     PUSH 0
     PUSH offset USER32    ;Titulo del mensaje
     PUSH offset USER32    ;Texto del mensaje
     PUSH 0
     CALL EAX
   end start

Supuestamente el exe no debe de hacer nada, ya que no hay nada que importar, pero al compilar y editar el archivo con un editor hexadecimal se muestra como el exe funciona.







Funciono!



Ahora, si esto lo modificamos un poco y le agregamos unos XOR podriamos modificar y agregar cadenas encriptadas. bueno eso es solo mi punto de vista.

Tambien cabe la posibilidad de insertar codigo (cifrado) en una variable, desencriptarlo y ejecutarlo.

si a alguien le parece y quiere implementar algo, cuanta con toda mi ayuda.

PD: Muy pronto lanzare un [MASM][SRC] Downloader
2  Programación / Scripting / Crackme en batch en: 10 Junio 2011, 02:58 am
Espero que lo puedan resolver y no usen las "Batch Injection". Suerte

Código
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. Title Ofuscacion 1KETI
  4. :menu
  5. set/p "str=Ingresa la clave correcta: "
  6. set "pim=%str:~0,1%"
  7. set "ele=9"
  8. cls
  9. set "e=%str:0=37%"
  10. set "e=%e:a=10%"
  11. set "e=%e:b=11%"
  12. set "e=%e:c=12%"
  13. set "e=%e:d=13%"
  14. set "e=%e:e=14%"
  15. set "e=%e:f=15%"
  16. set "e=%e:g=16%"
  17. set "e=%e:h=17%"
  18. set "e=%e:i=18%"
  19. set "e=%e:j=19%"
  20. set "e=%e:k=20%"
  21. set "e=%e:l=21%"
  22. set "e=%e:m=22%"
  23. set "e=%e:n=23%"
  24. set "e=%e:ñ=24%"
  25. set "e=%e:o=25%"
  26. set "e=%e:p=26%"
  27. set "e=%e:q=27%"
  28. set "e=%e:r=28%"
  29. set "e=%e:s=29%"
  30. set "e=%e:t=30%"
  31. set "e=%e:u=31%"
  32. set "e=%e:v=32%"
  33. set "e=%e:w=33%"
  34. set "e=%e:x=34%"
  35. set "e=%e:y=35%"
  36. set "e=%e:z=36%"
  37. set "e=%e: =40%"
  38. set "e=%e:.=41%"
  39. call:cont %e%
  40. call:scd %e%
  41. set "f=%pim:0=37%"
  42. set "f=%f:a=10%"
  43. set "f=%f:b=11%"
  44. set "f=%f:c=12%"
  45. set "f=%f:d=13%"
  46. set "f=%f:e=14%"
  47. set "f=%f:f=15%"
  48. set "f=%f:g=16%"
  49. set "f=%f:h=17%"
  50. set "f=%f:i=18%"
  51. set "f=%f:j=19%"
  52. set "f=%f:k=20%"
  53. set "f=%f:l=21%"
  54. set "f=%f:m=22%"
  55. set "f=%f:n=23%"
  56. set "f=%f:ñ=24%"
  57. set "f=%f:o=25%"
  58. set "f=%f:p=26%"
  59. set "f=%f:q=27%"
  60. set "f=%f:r=28%"
  61. set "f=%f:s=29%"
  62. set "f=%f:t=30%"
  63. set "f=%f:u=31%"
  64. set "f=%f:v=32%"
  65. set "f=%f:w=33%"
  66. set "f=%f:x=34%"
  67. set "f=%f:y=35%"
  68. set "f=%f:z=36%"
  69. set "f=%f: =40%"
  70. set "f=%f:.=41%"
  71. set/a e=%e% * (%f% + %e:~-1%)
  72. call:reverse %e%
  73. call:mot %e%
  74. set "e=%e:a=10%"
  75. set "e=%e:b=11%"
  76. set "e=%e:c=12%"
  77. set "e=%e:d=13%"
  78. set "e=%e:e=14%"
  79. set "e=%e:f=15%"
  80. set "e=%e:g=16%"
  81. set "e=%e:h=17%"
  82. set "e=%e:i=18%"
  83. set "e=%e:j=19%"
  84. set "e=%e:k=20%"
  85. set "e=%e:l=21%"
  86. set "e=%e:m=22%"
  87. set "e=%e:n=23%"
  88. set "e=%e:o=24%"
  89. set "e=%e:p=25%"
  90. set "e=%e:q=26%"
  91. set "e=%e:r=27%"
  92. set "e=%e:s=28%"
  93. set "e=%e:t=29%"
  94. set "e=%e:u=30%"
  95. set "e=%e:v=31%"
  96. set "e=%e:w=32%"
  97. set "e=%e:x=33%"
  98. set "e=%e:y=34%"
  99. set "e=%e:z=35%"
  100. set "e=%e:0=01%"
  101. set "e=%e:1=10%"
  102. set "e=%e:2=100%"
  103. set "e=%e:3=101%"
  104. set "e=%e:4=110%"
  105. set "e=%e:5=111%"
  106. set "e=%e:6=1000%"
  107. set "e=%e:7=1001%"
  108. set "e=%e:8=1010%"
  109. set "e=%e:9=1011%"
  110. set "e=%e:01=a%"
  111. set "e=%e:10=b%"
  112. set "e=%e:11=c%"
  113. set "e=%e:00=d%"
  114. set "e=%e:1=u%"
  115. set "e=%e:0=v%"
  116. set "e=%e:aa=e%"
  117. set "e=%e:ab=f%"
  118. set "e=%e:ac=g%"
  119. set "e=%e:ad=h%"
  120. set "e=%e:ba=i%"
  121. set "e=%e:bb=j%"
  122. set "e=%e:bc=k%"
  123. set "e=%e:bd=l%"
  124. set "e=%e:ca=m%"
  125. set "e=%e:cb=n%"
  126. set "e=%e:cc=o%"
  127. set "e=%e:cd=p%"
  128. set "e=%e:da=q%"
  129. set "e=%e:db=r%"
  130. set "e=%e:dc=s%"
  131. set "e=%e:dd=t%"
  132. set "e=%e:a=10%"
  133. set "e=%e:b=11%"
  134. set "e=%e:c=12%"
  135. set "e=%e:d=13%"
  136. set "e=%e:e=14%"
  137. set "e=%e:f=15%"
  138. set "e=%e:g=16%"
  139. set "e=%e:h=17%"
  140. set "e=%e:i=18%"
  141. set "e=%e:j=19%"
  142. set "e=%e:k=20%"
  143. set "e=%e:l=21%"
  144. set "e=%e:m=22%"
  145. set "e=%e:n=23%"
  146. set "e=%e:o=24%"
  147. set "e=%e:p=25%"
  148. set "e=%e:q=26%"
  149. set "e=%e:r=27%"
  150. set "e=%e:s=28%"
  151. set "e=%e:t=29%"
  152. set "e=%e:u=30%"
  153. set "e=%e:v=31%"
  154. call:reverse %e%
  155. set "e=%e:1=11%"
  156. set "e=%e:2=12%"
  157. set "e=%e:3=13%"
  158. set "e=%e:4=21%"
  159. set "e=%e:5=22%"
  160. set "e=%e:6=23%"
  161. set "e=%e:7=31%"
  162. set "e=%e:8=32%"
  163. set "e=%e:9=33%"
  164. set "e=%e:11=A%"
  165. set "e=%e:12=B%"
  166. set "e=%e:13=C%"
  167. set "e=%e:21=D%"
  168. set "e=%e:22=E%"
  169. set "e=%e:23=F%"
  170. set "e=%e:31=G%"
  171. set "e=%e:32=H%"
  172. set "e=%e:33=I%"
  173. set "e=%e:0=J%"
  174. call:reverse %e%
  175. set "ran=%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%"
  176. call:reverse %e%!ran!
  177. call:revclav 3AAJCCJAFA2AA!ran!
  178. if ["!e!"]==["!clave!"] (Echo Correcto&pause&exit) else (echo Incorrecto&pause&exit)
  179.  
  180. :cont
  181. set arg=%*
  182. if not defined arg (goto :eof)
  183. set word=%arg%
  184. set/a cont=0
  185. :loop
  186. if not defined word (goto end)
  187. set word=%word:~1%
  188. set/a cont+=1
  189. goto loop
  190. :end
  191. set cods=%cont%
  192. goto:EoF
  193.  
  194. :revclav
  195. set "clave=%*"
  196. set "posad=%ele%"
  197. :crptnn
  198. if ["%posad%"]==["0"] (goto:eof)
  199. set clave=%clave:~1,-1%%clave:~0,1%%clave:~-1%
  200. set/a posad-=1
  201. goto crptnn
  202. goto:Eof
  203.  
  204. :scd
  205. set var=%*
  206. set/a num=%cods% - 1
  207. for /l %%a in (%num%,-1,0) do (
  208. call set/a a+=%var:~0,1% * !var:~%% style="color: #448888;">a,1!
  209. )
  210. set e=%a%
  211. goto:Eof
  212.  
  213. :reverse
  214. set "e=%*"
  215. set "pasad=%ele%"
  216. :crptn
  217. if ["%pasad%"]==["0"] (goto:eof)
  218. set e=%e:~1,-1%%e:~0,1%%e:~-1%
  219. set/a pasad-=1
  220. goto crptn
  221. goto:Eof
  222.  
  223. :mot
  224. set "numero=%*"
  225. set hex=36
  226. :bucle
  227. set /a resto=%numero%%%hex%
  228. if %resto%==10 (set resto=A)
  229. if %resto%==11 (set resto=B)
  230. if %resto%==12 (set resto=C)
  231. if %resto%==13 (set resto=D)
  232. if %resto%==14 (set resto=E)
  233. if %resto%==15 (set resto=F)
  234. if %resto%==16 (set resto=G)
  235. if %resto%==17 (set resto=H)
  236. if %resto%==18 (set resto=I)
  237. if %resto%==19 (set resto=J)
  238. if %resto%==20 (set resto=K)
  239. if %resto%==21 (set resto=L)
  240. if %resto%==22 (set resto=M)
  241. if %resto%==23 (set resto=N)
  242. if %resto%==24 (set resto=O)
  243. if %resto%==25 (set resto=P)
  244. if %resto%==26 (set resto=Q)
  245. if %resto%==27 (set resto=R)
  246. if %resto%==28 (set resto=S)
  247. if %resto%==29 (set resto=T)
  248. if %resto%==30 (set resto=U)
  249. if %resto%==31 (set resto=V)
  250. if %resto%==32 (set resto=W)
  251. if %resto%==33 (set resto=X)
  252. if %resto%==34 (set resto=Y)
  253. if %resto%==35 (set resto=Z)
  254. set /a numero=numero/%hex%
  255. set resultado=%resto%%resultado%
  256. if %numero% GTR 0 (goto bucle)
  257. set "e=%resultado%"
  258. goto:eof
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines