Skip to content

heyuanree/Lurk

Repository files navigation

Lurk

后们绑定命令行/GUI工具。

FEATURE

  • 支持x86架构32位PE程序
  • 采用模块化开发(目前GUI只封装了downloadAndExec的功能)
  • 功能代码支持以asm/bin/C/dll等形式开发
  • 以拓展section的形式增加shellcode
  • 支持XOR SMC
  • 跨平台

AV bypass List

欢迎反馈并更新杀软测试结果

  • 360
  • KasperSky
  • Windows Defender
  • 火绒

Getting Start

Installation

首先你至少要有64位Python,推荐使用python2.7,你可以从这里选择你需要的版本并下载。

安装python时,勾选pipAdd python.exe to Path

python_install

用pip安装依赖包

pip源慢的可以切换国内源

创建pip.ini文件在如下路径C:\Users\XXX\pip\pip.ini,并修改内容为

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com

结束后首先

pip install setuptools --upgrade

pip install -r requestments.txt

Troubleshooting

error: can't copy 'src\build\capstone.dll': doesn't exist or not a regular file

直接下载capstone的二进制编译文件

error: can't copy 'src\build\llvm\lib\libkeystone.so': doesn't exist or not a regular file

下载keystone的二进制编译文件

Exception: Unable to find C:\Users\ree/lief-0.8.3-py2.7-windows_x64.egg

pip安装liefpip install lief

Usage

目前只提供GUI界面的使用文档

主界面

main

菜单栏中,Lurk可以得到Help/About信息,Help可以打开本README.md文档

Url

该变量定义将下载的目标文件的Url地址,必须以http://https://开头。推荐使用如github.com等公知安全的域名,为目标文件下载地址;不推荐使用ip定位的方式。

Filename

目标文件,使用browser按钮进行填充。

Address

patch地址,需要使用者手动确定,后续将自动化该功能。值得注意的是,该地址需要满足以下几个条件。

  1. 尽量避免地址出现在循环中。因为我们没有设置shellcode的执行次数,一旦出现在循环中,shellcode将被执行多次,出现不可预计的情况。
  2. 尽量避免出现在开头或结尾。开头与结尾是AV的重点检查地址,出现在开头可能会引起AV的警报。
  3. patch地址的指令长度必须为5.

Download Filename

下载文件的保存名称。如calc.exe

Debug info

右侧为patch过程中,相关信息的log。

patch后因为调用了我自己写的dll,将Lurk\shellcode\dll\downloader.dll拷贝致同一目录。

Task list

  • 支持x86架构64位
  • 支持ELF,Mach-O
  • 实现code cave jump方式添加shellcode
  • 实现新加section方式增加shellcode
  • 自动化寻找可以patch的地址,并测试
  • 添加功能dll
  • 丰富SMC加密算法,如增加AES/DES
  • 完善log信息
  • 实现控制台功能,前端增加控制界面
  • 增加加密通讯功能
  • 添加C/S或者B/S架构,前端只有GUi,功能代码全部放入后端
  • 美化界面
  • 完全模块化

Development

Class class LurkGUI(object)

为GUI而封装的类。

Class class LurkPyQt5(QMainWindows)

PyQt5实现的前端界面。

Class class LurkMain(object)

命令行处理类。

Class class Pebin(object)

class Pebin(object)是主要的逻辑实现类,添加新的功能定义私有方法即可。

self.do_patch(self, filename)调用Patcher.inject(raw)Patcher.patch()进行patch。

Class class Patcher(object)

class Patcher(object)是主要涉及PE文件操作的类。

Dirctoinary shellcode

主要shellcode文件夹,asmdllrawdata为不同格式存储的shellcode。tmp为patch过程中存放的临时生成shellcode。

Report

如果你有任何关于Bug或功能的想法,欢迎与我联系。heyuanree@gmail.com

Changelog

  • V-0.1 0.1版本发布
  • V-0.1.1 增加GUI版本的自动探测可patch地址的功能
  • V-0.1.2 增加线程功能,前端界面不再出现假死

About

Backdoor bind tools.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages