Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样能使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。
强烈建议把把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数,比如30。这表示每个用户的“.bash_history”文件只能保存30条旧命令。
/etc/issue文件是Linux系统开机启动时在命令行界面弹出的欢迎语句文件。
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
口令:Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”
/etc/passwd
/etc/shadow
/etc/services文件是记录网络服务名和它们对应使用的端口号及协议。
1. 如果每一个服务都能够严格遵循该机制,在此文件里标注自己所使用的端口信息,则主机上各服务间对端口的使用,将会非常清晰明了,易于管理。
2. 在该文件中定义的服务名,可以作为配置文件中的参数使用。
3. 当有特殊情况,需要调整端口设置,只需要在/etc/services中修改www的定义,即可影响到服务
服务名 端口号/协议名 “tab” 别名
0day漏洞是指负责应用程序的程序员或供应商所未知的软件缺陷。因为该漏洞未知,所以没有可用的补丁程序。换句话说,该漏洞是由不直接参与项目的人员发现的。术语“0day”是指从发现漏洞到对其进行首次攻击之间的天数。0day漏洞公开后,便称为nday漏洞。
作为管理员或用户,通过避免最初发布的版本,可能会免受第一批产品中至少任何未发现的0day漏洞的影响并且将错误报告提交给开发人员和公司。错误报告是程序员解决软件问题的一种有效方法
作为开发人员,最好的办法是招募尽可能多的版本测试人员。这是开源软件比专有软件更具优势的地方。在源代码公开的情况下,任何人都可以审查和测试代码。而且,Beta开源软件通常面向公众发布,因此任何人都可以进行测试。
if(isvalid(sn)) then go_exit(); else do_work();
|
call isvalid cmp ax,0 jz go_exit()
|
*** e8 xx xx xx 74(改为75,或反之)
jz:若相等则跳(机器码74); jnz若不相等则跳(机器码75) |
ASLR(地址随机化)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。
但是,地址随机化不是对所有模块和内存区都进行随机化!虽然libc、栈、堆的加载位置被随机化,但主镜像不会
BOF(buffer overflow): 缓存溢出(Buffer overflow),是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符数来填满一个域,通常是内存区地址。在某些情况下,这些过量的字符能够作为“可执行”代码来运行。从而使得攻击者可以不受安全措施的约束来控制被攻击的计算机。
Heap spary: Windows的堆因为动态分配和释放的特点,其看起来是不连续(没有规律的),但是仍可以找到一定的规律:大量的连续分配会更倾向使用连续的地址,减少了碎片化。这为利用找到了机会。HeapSpray就是在内存中分配大量的空间,申请的这些内存都是由相同的NOPs+shellcode所构成。如果存在任意地址写的漏洞,就可以利用该HeapSpray:改变程序的流程,使EIP指向事先分配好的NOPs+shellcode的内存块。这样shellcode就可以得到执行了。
Botnet:僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
可能带来的危害: 拒绝服务攻击、发送垃圾邮件、窃取秘密、滥用资源、僵尸网络挖矿
Bot:Robet的缩写,可以自动地执行预定义的功能、可以被预定义的命令控制,Bot不一定是恶意的,但在僵尸网络中的Bot都是设计用来完成恶意功能的。
Zombie:被安装了恶意Bot或其它可以恶意远程控制程序的计算机(僵尸计算机)。
CDN的全称是Content Delivery Network,即内容分发网络。CDN是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。
特点:本地Cache加速、镜像服务、远程加速、带宽优化、集群抗攻击
Cookie类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
Cookie捕获/重放:
攻击者可以通过木马等恶意程序,或使用跨站脚本攻击等手段偷窃存放在用户硬盘或内存中的Cookie。借助网络攻击手段,包括在不安全的局域网中被动地监听网络通信;通过攻击网络用户的路由器,或通过搭建恶意的无线路由器等手法,控制路由基础设施,将网络流量重定向到攻击者控制的主机;发动DNSPharming(域欺骗)攻击,通过DNS缓存中毒、DNS应答欺骗、或修改用户端的本地域名解析文件等方法攻击DNS系统,导致用户对合法网站的访问请求被重定向到恶意网站等等,同样可能窃取Cookie。对于捕获到的认证Cookie,攻击者往往会猜测其中的访问令牌,试图获取会话ID、用户名与口令、用户角色、时间戳等敏感信息;或者直接重放该Cookie,假冒受害者的身份发动攻击
CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。
CVE 的英文全称是“Common Vulnerabilities & Exposures”通用漏洞披露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得CVE成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞,如果有CVE名称,你就可以快速地在任何其它CVE兼容的数据库中找到相应修补的信息,解决安全问题。
DATA LOSS:
是一种信息技术术语,是指由于意外情况导致计算机数据永久丢失。丢失数据的一些常见原因是电源故障,有意或无意删除计算机文件或程序,各种硬件和软件问题,恶意计算机病毒或计算机黑客。数据丢失有多种类型,例如数据截断,由于数据没有正确存储,使得用户无法使用这些数据。损坏的数据,将错误插入到数据中使其无法访问或无效;并完全丢失数据,如果删除文件,可能会发生这种情况。
许多情况下,数据恢复可以执行操作以重新获得对丢失数据的访问,但这并不总是可能的。为避免丢失数据,建议用户使用多个硬盘分区进行定期和频繁的数据备份,并安装电涌保护器和备用电池系统。
DATA LEAK:
数据泄露指将机密信息、私人信息或其他敏感信息发布到不安全的环境中。数据泄露可能由意外引起,也可能是蓄意攻击的结果.
1、使用泄漏;1)操作失误导致技术数据泄漏或损坏;2)通过打印、剪切、复制、粘贴、另存为、重命名等操作泄漏数据。
2、存储泄漏:1) 数据中心、服务器、数据库的数据被随意下载、共享泄漏;2)离职人员通过U盘、CD/DVD、移动硬盘随意拷走机密资料;3)移动笔记本被盗、丢失或维修造成数据泄漏。
3、传输泄漏:1)通过email、QQ、MSN等轻易传输机密资料;2)通过网络监听、拦截等方式篡改、伪造传输数据。
访问控制:对用户访问网络资源的权限进行严格的认证和控制。例如,进行用户身份认证,对口令加密、更新和鉴别,设置用户访问目录和文件的权限,控制网络设备配置的权限,等等。数据加密防护:加密是防护数据安全的重要手段。加密的作用是保障信息被人截获后不能读懂其含义。
网络隔离防护:网络隔离有两种方式,一种是采用隔离卡来实现的,一种是采用网络安全隔离网闸实现的。
其他措施:其他措施包括信息过滤、容错、数据镜像、数据备份和审计等。
分布式拒绝服务攻击原理分布式拒绝服务攻击DDoS是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布的、协同的大规模攻击方式。单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。与DoS攻击由单台主机发起攻击相比较,分布式拒绝服务攻击DDoS是借助数百、甚至数千台被入侵后安装了攻击进程的主机同时发起的集团行为。
DEFCON极客大会是全球顶级的安全会议,诞生于1993年,被称为极客界的“奥斯卡”,每年7月在美国的拉斯维加斯举行,近万名参会者除来自世界各地的极客、安全领域研究者、爱好者,还有全球许多大公司的代表以及美国国防部、联邦调查局、国家安全局等政府机构的官员
数据执行保护 (DEP) 有助于防止电脑遭受病毒和其他安全威胁的侵害。
应用会留出一部分电脑内存用于暂存数据,同时留出另一部分内存用于暂存应用使用的指令。 黑客可能试图诱使应用运行(也称为执行)放置在电脑内存中伪装成指令的有害数据。 这可能会让黑客得以控制你的电脑
与防火墙或防病毒程序不同,DEP 无法帮助防止有害的程序安装在计算机中,而是对您的程序进行监视,确定它们是否能够安全地使用系统内存。要执行监视操作,DEP 软件既可以独立运行,也可以与兼容微处理器协作,将某些内存位置标记为“不可执行”。如果程序尝试从受保护的内存位置运行代码(无论是否为恶意代码),DEP 均将关闭程序并向您发送通知。
DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分. 在目标进程中调用LoadLibrary把DLL加载到目标进程的地址空间.
数据泄密(泄露)防护(Data leakage prevention, DLP),又称为“数据丢失防护”(Data Loss prevention, DLP),有时也称为“信息泄漏防护”(Information leakage prevention, ILP)。数据泄密防护(DLP)是通过一定的技术手段,防止企业的指定数据或信息资产以违反安全策略规定的形式流出企业的一种策略。
通过身份认证和加密控制以及使用日志的统计对内部文件进行控制。
DLP 采用了三种基础检测技术和三种高级检测技术。基础检测技术中通常有三种方式,正则表达式检测(标示符)、关键字和关键字对检测、文档属性检测。高级检测技术中也有三种方式,精确数据比对 (EDM)、指纹文档比对 (IDM)、向量分类比对 (SVM)。
DNS缺陷:
传统的DNS方式是通过53端口向DNS服务器发送明文的请求信息,如果有意的话,ISP可以很容易地在用户到DNS服务器之间将这个请求进行劫持,由于传统DNS请求基于无连接的UDP协议,用户端只接受最快到达的查询结果,所以ISP可以通过抢先应答的方式向用户返回错误的IP,这种做法被称为域名劫持,这是DNS协议的一个典型缺陷
DNS over HTTPS(DoH)
工作在应用层,借助HTTPS/ HTTP/2来传输DNS协议
DoH的具体原理其实就是在DNS外面套一层HTTPS。(而且更慢了)即流程变成了
你的电脑 -> DoH服务器 -> DNS服务器 -> DoH服务器 -> 你的电脑
以上流程中的一个箭头代表一个HTTPS加密链接,使得该过程中的所有流量皆受到强加密,使用 DoH 可以有效的规避域名劫持等问题。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口
换句话说docker是一种技术,能使得应用在任何环境都能用的打包技术。打包出的东西叫镜像。镜像运行时(有对外提供服务能力)叫容器。
DVM(Dalvik Virtual Machine):
java文件需要JVM来执行。java可以免费用,但JVM不行。对此,Google采用了自己的Virtual Machine,即,Dalvik Virtual Machine(DVM)
DVM是安卓中使用的虚拟机。所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例。他们都提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能,各自拥有一套完整的指令系统。
①JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码
JAVA程序经过编译,生成JAVA字节码保存在class文件中,JVM通过解码class文件中的内容来运行程序。而DVM运行的是Dalvik字节码,所有的Dalvik字节码由JAVA字节码转换而来,并被打包到一个DEX(Dalvik Executable)可执行文件中,DVM通过解释DEX文件来执行这些字节码。
②Dalvik可执行文件体积更小
SMAIL
Smali,Baksmali分别是指安卓系统里的DVM所使用的一种.dex格式文件的汇编器,反汇编器。
欧盟通用数据保护条例(GDPR)取代数据保护指令95/46 / EC,旨在协调整个欧洲的数据隐私法律,保护所有欧盟公民的数据隐私,并重塑整个地区在存储和处理隐私数据上的管理方式。违反GDPR的规定,组织可能会被罚款高达全球年营业额的4%,或2000万欧元。比如,如果没有客户的足够的同意处理数据或违反隐私概念的核心内容,就可以认定为最严重的侵权行为并施加的最高罚款。有一种分级的处罚办法,例如,下列行为将被罚款全球营业额的2%(第28条):公司没有有秩序的记录,不通知监管当局有关的违约,不进行影响评估。值得注意的是,这些规则适用于控制方和处理方 - 这意味着'云计算'不会免于GDPR的执行。
心脏出血(英语:Heartbleed),也简称为心血漏洞,Heartbleed漏洞之所以得名,是因为用于安全传输层协议(TLS)及数据包传输层安全协议(DTLS)的 Heartbeat扩展存在漏洞。Heartbeat扩展为TLS/DTLS提供了一种新的简便的连接保持方式,但由于OpenSSL 1.0.2-beta与OpenSSL 1.0.1在处理TLS heartbeat扩展时的边界错误,攻击者可以利用漏洞披露连接的客户端或服务器的存储器内容,导致攻击者不仅可以读取其中机密的加密数据,还能盗走用于加密的密钥。
蜜罐技术(Honeypot)发展于1990年的一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
蜜罐好比是情报收集系统。蜜罐是故意让人攻击的目标,引诱黑客前来攻击。所以攻击者入侵后,你就可以知道他是如何得逞的,随时了解针对服务器发动的最新的攻击和漏洞。还可以通过窃听黑客之间的联系,收集黑客所用的种种工具,并且掌握他们的社交网络。
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件。IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序
就其本质而言,IDA是一种递归下降反汇编器。但是,为了提高递归下降过程的效率,IDA的开发者付出了巨大的努力,来为这个过程开发逻辑。为了克服递归下降的一个最大的缺点,IDA在区分数据与代码的同时,还设法确定这些数据的类型。虽然你在IDA中看到的是汇编语言形式的代码,但IDA的主要目标之一,在于呈现尽可能接近源代码的代码。此外,IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。这些注释将原始十六进制代码的数量减到最少,并显著增加了向用户提供的符号化信息的数量。
Iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的。
可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。防火墙的规则指定所检查包的特征和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过],DROP[删除],QUEUE[排队],或者 RETURN[返回]。
LLVM 命名最早源自于底层虚拟机(Low Level Virtual Machine)的缩写,由于命名带来的混乱,目前LLVM就是该项目的全称。LLVM 核心库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技术的集合。LLVM是伊利诺伊大学的一个研究项目,提供一个现代化的,基于SSA的编译策略能够同时支持静态和动态的任意编程语言的编译目标。自那时以来,已经成长为LLVM的主干项目,由不同的子项目组成,其中许多正在生产中使用的各种 商业和开源的项目,以及被广泛用于学术研究。
O-llvm是基于llvm进行编写的一个开源项目,它的作用是对前端语言生成的中间代码进行混淆,目前在市场上,一些加固厂商(比如360加固宝、梆梆加固)会使用改进的O-llvm对它们so文件中的一些关键函数采用O-llvm混淆,增加逆向的难度。因此,掌握O-llvm的实现过程,是很有必要的
MD5信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试及入侵检测系统签名开发。还提供了反取证和高级闪避工具,它们中的一些构成了Metasploit框架
网络接入服务器(Network Attached Server,缩写为NAS)是远程访问接入设备。它位于公用电话网(PSTN/ISDN)与IP网之间,将拨号用户接入IP网;它可以完成远程接入、实现拨号虚拟专网(VPDN)、构建企业内部Intranet等网络应用。
NAS 网络连接存储- 将储存设备连接到现有网络上,提供数据和文件服务。 与客户通信通常采用NFS、CIFS协议
定义:Native Development Kit,是 Android的一个工具开发包; NDK是属于 Android 的,与Java并无直接关系
作用:快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK即可通过 NDK在 Android中 使用 JNI与本地代码(如C、C++)交互。
Ntop是一种监控网络流量工具,用ntop显示网络的使用情况比其他一些网络管理软件更加直观、详细。Ntop甚至可以列出每个节点计算机的网络带宽利用率。Ntop主要提供以下一些功能:①.自动从网络中识别有用的信息;②.将截获的数据包转换成易于识别的格式;
③.对网络环境中通信失败的情况进行分析;④.探测网络环境中的通信瓶颈,记录网络通信的时间和过程。
Ntop可以通过分析网络流量来确定网络上存在的各种问题;也可以用来判断是否有黑客正在攻击网络系统;还可以很方便地显示出特定的网络协议、占用大量带宽的主机、各次通信的目标主机、数据包的发送时间、传递数据包的延时等详细信息。
显示目标文件的信息,可以对编译得到的目标文件进行解析。以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。
objdump -x file objdump -t file
可以得到文件中函数的符号表、偏移地址、段大小等等信息。
OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。基本上,调试自己的程序因为有源码,一般用vc,破解别人的程序用OllyDebug。
payload称为攻击载荷,主要用于建立目标机与攻击机之间的稳定连接,并返回一个shell,也可以进行程序注入等。
payload的3种类型
(1)singles(独立载荷)
独立载荷,可直接植入目标系统并执行相应的程序,如:shell_bind_tcp。
(2)stagers(传输器载荷)
传输器载荷,用于目标机与攻击机之间建立稳定的网络连接,与stages(传输体载荷)配合攻击。通常该种载荷体积都非常小,可以在漏洞利用后,方便进行注入,这类载荷功能都非常相似,大致分为bind型和reverse型。
bind型:需要攻击机主动连接目标端口。
reverse型:目标机反向连接攻击机,需要提前设定好连接攻击机的ip地址和端口号。
(3)stages(传输体)
传输体载荷,在stagers建立好稳定的连接后,攻击机将stages传输给目标机,由stagers进行相应处理,将控制权转交给stages。如得到目标机的shell或者meterpreter控制程序运行。这样攻击机可以在本端输入相应命令控制目标机。
PGP(Pretty Good Privacy优良保密协议)是一套用于消息加密、验证的应用程序,采用IDEA的散列算法作为加密与验证之用。PGP加密由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成。每个步骤支持几种算法,可以选择一个使用。每个公钥均绑定唯一的用户名和/或者E-mail地址。这个系统的第一个版本通常称为可信Web或X.509系统;X.509系统使用的是基于数字证书认证机构的分层方案,该方案后来被加入到PGP的实现中。当前的PGP加密版本通过一个自动密钥管理服务器来进行密钥的可靠存放。
缓冲区溢出的变体攻击,叫做return-to-libc攻击。这种攻击不需要一个栈可以执行,甚至不需要一个shellcode。取而代之的是我们让漏洞程序调转到现存的代码(比如已经载入内存的libc库中的system()函数等)来实现我们的攻击。
robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。
robots协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
以baidu.com为例:
Rootkits最早是一组用于UNIX操作系统的工具集,黑客使用它们隐藏入侵活动的痕迹,它能在操作系统中隐藏恶意程序。这些程序在植入系统后,rootkits会将它们隐藏起来,它能隐藏任何恶意程序过程、文件夹、注册码。
Rootkits通常分为:应用级别---内核级别----硬件级别,早期的是rootkit主要为应用级rootkit通过替换login、ps、ls、netstat等系统工具或修改.rhosts等系统配置文件等实现隐藏后门,硬件级RootKits主要是指Bios Rootkits,能够在系统加载前获得控制权,通过向磁盘中写入文件,再由引导程序加载该文件重新获得控制权也可以采用虚拟机技术,使整个操作系统运行在rootkit掌握之中,常见的rootkit是内核级rootkit,通过直接修改内核来添加隐藏代码实现控制系统的功能。
脚本小子(script kiddie)是一个贬义词,用来描述:以“黑客”自居并沾沾自喜的初学者。脚本小子不像真正的黑客那样发现系统漏洞,他们通常使用别人开发的程序来恶意破坏他人系统。通常的刻板印象为一位没有专科经验的少年,破坏无辜网站企图使得他的朋友感到惊讶。因而称之为脚本小子。
他们常常从某些网站上复制脚本代码,然后到处粘贴,却并不一定明白他们的方法与原理。他们钦慕于黑客的能力与探索精神,但与黑客所不同的是,脚本小子通常只是对计算机系统有基础了解与爱好,但并不注重程序语言、算法、和数据结构的研究,虽然这些对于真正的黑客来说是必须具备的素质。
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令。
Snort已发展成为一个具有多平台、实时流量分析、网络IP数据包记录等特性的强大的网络入侵检测/防御系统,即NIDS/NIPS。Snort能够对网络上的数据包进行抓包分析,但区别于其它嗅探器的是,它能根据所定义的规则进行响应及处理。Snort 通过对获取的数据包,进行各规则的分析后,根据规则链,可采取Activation(报警并启动另外一个动态规则链)、Dynamic(由其它的规则包调用)、Alert(报警),Pass(忽略),Log(不报警但记录网络流量)五种响应的机制。
Socat 是 Linux 下的一个多功能的网络工具,名字来由是「Socket CAT」。Socat 的主要特点就是在两个数据流之间建立通道,且支持众多协议和链接方式。如 IP、TCP、 UDP、IPv6、PIPE、EXEC、System、Open、Proxy、Openssl、Socket等。
1.文件操作:
通过Socat读取文件 |
写入文件: |
# 从绝对路径读取 $ socat - /var/www/html/flag.php
|
$ echo "This is Test" | socat - /tmp/hello.html
|
2.网络管理
连接远程端口 |
监听一个新端口 |
$ socat - TCP:192.168.1.252:3306 |
$ socat TCP-LISTEN:7000 - |
3.端口转发
转发 TCP |
转发 UDP |
NAT 映射 |
$ socat -d -d -lf /var/log/socat.log TCP4-LISTEN:15672,bind=192.168.1.252,reuseaddr,fork TCP4:172.17.0.15:15672 |
$ socat -d -d -lf /var/log/socat.log UDP4-LISTEN:123,bind=192.168.1.252,reuseaddr,fork UDP4:172.17.0.15:123 |
公网: $socat tcp-listen:1234 tcp-listen:3389 私网: $socat tcp:outerhost:1234 tcp:192.168.1.34:3389 |
1. -d -d 前面两个连续的 -d -d 代表调试信息的输出级别。 2. -lf /var/log/socat.log 指定输出信息的文件保存位置。 3. TCP4-LISTEN:15672 在本地建立一个 TCP IPv4 协议的监听端口,也就是转发端口。这里是 15672,请根据实际情况改成你自己需要转发的端口。 4. bind 指定监听绑定的 IP 地址,不绑定的话将监听服务器上可用的全部 IP。 5. reuseaddr 绑定一个本地端口。 6. fork TCP4:172.17.0.15:15672 指的是要转发到的服务器 IP 和端口,这里是 172.17.0.15 的 15672 端口。 |
|
在一个 NAT 网络环境中,也是可以通过 Socat 将内部机器端口映射到公网上的。 |
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息
假设某网站页面显示时URL为http://www.example.com?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。
socks5 代理(-D):相当于 ss/ssr
在 HostA 的本地 1080 端口启动一个 socks5 服务,通过本地 socks5 代理的数据会通过 ssh 链接先发送给 HostB,再从 HostB 转发送给远程主机:
HostA$ ssh -D localhost:1080 HostB
那么在 HostA 上面,浏览器配置 socks5 代理为 127.0.0.1:1080,看网页时就能把数据通过 HostB 代理出去,类似 ss/ssr 版本,只不过用 ssh 来实现。
Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。在问题页面,不会弹出任何广告,销售信息,JavaScript 窗口等。
---------------------------------------------------------------------
栈溢出(又称缓冲区溢出)攻击是最常用的黑客技术之一。我们知道,UNIX本身以bai及其上的许多应用程序都是用C语言编写的,C语言不检查缓冲区的边界。在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区。这称作“堆栈溢出或缓冲溢出”。
一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误。但是,如果输入的数据是经过“黑客”精心设计的,覆盖堆栈的数据恰恰是黑客的入侵程序代码,黑客就获取了程序的控制权。如果该程序恰好是以root运行的,黑客就获得了root权限,然后他就可以编译黑客程序、留下入侵后门等,实施进一步地攻击。按照这种原理进行的黑客入侵就叫做“堆栈溢出攻击”。
TCP-SYN Flood攻击又称半开式连接攻击,每当我们进行一次标准的TCP连接,都会有一个三次握手的过程,而TCP-SYN Flood在它的实现过程中只有前两个步骤。这样,服务方会在一定时间处于等待接收请求方ACK消息的状态。由于一台服务器可用的TCP连接是有限的,如果恶意攻击方快速连续地发送此类连接请求,则服务器可用TCP连接队列很快将会阻塞,系统资源和可用带宽急剧下降,无法提供正常的网络服务,从而造成拒绝服务。
TCPdump就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
匿名网络;
Tor用户在本机运行一个洋葱代理服务器(onion proxy),这个代理周期性地与其他Tor交流,从而在Tor网络中构成虚电路(virtual circuit)。Tor是在5层协议栈中的应用层进行加密(也就是按照'onion'的模式)。而它之所以被称为onion,是因为它的结构就跟洋葱相同,你只能看出它的外表,而想要看到核心,就必须把它层层的剥开。即每个路由器间的传输都经过对等密钥(symmetric key)来加密,形成有层次的结构。它中间所经过的各节点,都好像洋葱的一层皮,把客户端包在里面,算是保护信息来源的一种方式,这样在洋葱路由器之间可以保持通讯安全。同时对于客户端,洋葱代理服务器又作为SOCKS接口。一些应用程序就可以将Tor作为代理服务器,网络通讯就可以通过Tor的虚拟环路来进行。
进入Tor网络后,加密信息在路由器间层层传递,最后到达“出口节点”(exit node),明文数据从这个节点直接发往原来的目的地。对于目的地主机而言,是从“出口节点”发来信息。要注意的是明文信息即使在Tor网络中是加密的,离开Tor后仍然是明文的。维基解密创始人便声称其公开的某些文件是截获于Tor的出口节点。
traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute的原理是试图以最小的TTL(存活时间)发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。
1.VPN的英文全称是“VirtualPrivateNetwork”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。
2、它可以通过特殊的加密的通讯协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路,就好比是架设了一条专线一样,但是它并不需要真正的去铺设光缆之类的物理线路。这就好比去电信局申请专线,但是不用给铺设线路的费用,也不用购买路由器等硬件设备。
3、虚拟专用网(VPN)被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。虚拟专用网是对企业内部网的扩展。
4、虚拟专用网络的功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。
Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身
web渗透经典流程
判断脚本系统,判断数据库类型——>寻找注入点——>猜解数据库表名——>猜解字段名——>猜解用户名和密码——>寻找后台地址登录,获得网站管理权限(webshell)
常见漏洞:
注入漏洞:暴库漏洞;Cookies欺骗漏洞;文件包含漏洞;旁注攻击
wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。
wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成
wget 可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。
wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用
whois(读作“Who is”,非缩写)是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。通过whois来实现对域名信息的查询。早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询。网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用。whois通常使用TCP协议43端口。每个域名/IP的whois信息由对应的管理机构保存。
worm,一般解释为蠕虫。一般认为蠕虫是一种通过网络传播的主动攻击的恶性计算机病毒,是计算机病毒的子类。早期恶意代码的主要形式是计算机病毒COHE1985 COHE1989 COHE1990。1988年“Morris”蠕虫爆发后,Spafford为了区分蠕虫和病毒,对病毒重新进行了定义,他认为:“计算机病毒是一段代码,能把自身加到其他程序包括操作系统上;它不能独立运行,需要由它的宿主程序运行来激活它”SPAF1988。而网络蠕虫强调自身的主动性和独立性。
WriteProcessMemory是计算机语言中的一种函数。此函数能写入某一进程的内存区域(直接写入会出Access Violation错误),故需此函数入口区必须可以访问,否则操作将失败。
以PROCESS_ALL_ACCESS权限打开进程以后既可以使用ReadProcessMemory读取程序内存,也可以使用WriteProcessMemory改写程序的内存,这也是一些内存补丁使用的招数,以下是程序的实现代码
加壳:其实是利用特殊的算法,对可执行文件里的资源进行压缩,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。它们附加在原程序上通过加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。加上外壳后,原始程序代码在磁盘文件中一般是以加密后的形式存在的,只在执行时在内存中还原,这样就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序被静态反编译。
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。 客户端提交的数据本来就是应用所需要的,但是恶意攻击者利用网站对客户端提交数据的信任,在数据中插入一些符号以及javascript代码,那么这些数据将会成为应用代码中的一部分了。那么攻击者就可以肆无忌惮地展开攻击了。
勒索病毒,是一种新型电脑病毒,主要以邮件、程序木马、网页挂马的形式进行传播。该病毒性质恶劣、危害极大,一旦感染将给用户带来无法估量的损失。这种病毒利用各种加密算法对文件进行加密,被感染者一般无法解密,必须拿到解密的私钥才有可能破解。
勒索病毒文件一旦进入本地,就会自动运行,同时删除勒索软件样本,以躲避查杀和分析。接下来,勒索病毒利用本地的互联网访问权限连接至黑客的C&C服务器,进而上传本机信息并下载加密私钥与公钥,利用私钥和公钥对文件进行加密。除了病毒开发者本人,其他人是几乎不可能解密。加密完成后,还会修改壁纸,在桌面等明显位置生成勒索提示文件,指导用户去缴纳赎金。且变种类型非常快,对常规的杀毒软件都具有免疫性。攻击的样本以exe、js、wsf、vbe等类型为主,对常规依靠特征检测的安全产品是一个极大的挑战。
不同的应用层,流量分析起到的作用不同。
1.用户层:运营商通过分析用户网络流量,来计算网络消费。
2.管理层:分析网络流量可以帮助政府、企业了解流量使用情况,通过添加网络防火墙等控制网络流量来减少资源损失。
3.网站层:了解网站访客的数据,如ip地址、浏览器信息等;统计网站在线人数,了解用户所访问网站页面;通过分析出异常可以帮助网站管理员知道是否有滥用现象;可以了解网站使用情况,提前应对网站服务器系统的负载问题;了解网站对用户是否有足够的吸引能力。
4.综合层:评价一个网站的权重;统计大多数用户上网习惯,从而进行有方向性的规划以更适应用户需求。
漏洞扫描是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测(渗透攻击)行为
路由劫持,通过漏洞攻击用户的路由器,窃取用户资料的行为。如通过恶意链接或公网IP控制路由器等。攻击者控制路由器后,可通过篡改路由器的域名解析系统服务器等方法,植入广告、病毒,获取用户数据。遭路由劫持的计算机和手机会不断弹出广告,甚至导致网络银行、即时通信工具等账户被盗
木马病毒是指隐藏在正常程序中的一段具有特殊功能的恶意代码,是具备破坏和删除文件、发送密码、记录键盘和攻击Dos等特殊功能的后门程序。木马病毒其实是计算机黑客用于远程控制计算机的程序,将控制程序寄生于被控制的计算机系统中,里应外合,对被感染木马病毒的计算机实施操作。一般的木马病毒程序主要是寻找计算机后门,伺机窃取被控计算机中的密码和重要文件等。可以对被控计算机实施监控、资料修改等非法操作。木马病毒具有很强的隐蔽性,可以根据黑客意图突然发起攻击。
入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高了信息安全基础结构的完整性。它从计算机网络系统中的若干关键点收集信息,并分析这些信息,看看网络中是否有违反安全策略的行为和遭到袭击的迹象。入侵检测被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护
为某些非容易的获取讯息,利用社会科学(此指其中的社会常识)尤其心理学,语言学,欺诈学将其进行综合,有效的利用(如人性的弱点),并以最终获得信息为最终目的学科称为“社会工程学”
渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
换句话来说,渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。
我们认为渗透测试还具有的两个显著特点是:渗透测试是一个渐进的并且逐步深入的过程。渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。
#include
bool AdjustPrivileges() {
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tp;
TOKEN_PRIVILEGES oldtp;
DWORD dwSize = sizeof(TOKEN_PRIVILEGES);
LUID luid;
OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken);
if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {
CloseHandle(hToken);
OutputDebugString(TEXT("提升权限失败,LookupPrivilegeValue"));
return false;
}
ZeroMemory(&tp, sizeof(tp));
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
/* Adjust Token Privileges */
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) {
CloseHandle(hToken);
OutputDebugString(TEXT("提升权限失败 AdjustTokenPrivileges"));
return false;
}
// close handles
CloseHandle(hToken);
return true;
}
外挂(wài guà),又叫开挂、开外挂、辅助、第三方辅助软件,综合某些修改器的功能进行编程出的游戏修改器。一般指通过修改游戏数据而为玩家谋取利益的作弊程序或软件,通过改变软件的部分程序制作而成的作弊程序。
主要应用原理是在游戏中用封包和抓包工具对游戏本身或游戏服务器提交假参数从而改变游戏中的人物能力。
域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。
域名劫持一方面可能影响用户的上网体验,用户被引到假冒的网站进而无法正常浏览网页,而用户量较大的网站域名被劫持后恶劣影响会不断扩大;另一方面用户可能被诱骗到冒牌网站进行登录等操作导致泄露隐私数据。
如果知道该域名的真实IP地址,则可以直接用此IP代替域名后进行访问。比如访问谷歌 ,可以把访问改为http://216.239.53.99/ ,从而绕开域名劫持。