Skip to content

Commit

Permalink
add posts
Browse files Browse the repository at this point in the history
  • Loading branch information
Rvn0xsy committed Jul 29, 2024
1 parent aed2b54 commit 3a525c1
Show file tree
Hide file tree
Showing 10 changed files with 1,593 additions and 0 deletions.
83 changes: 83 additions & 0 deletions content/posts/2023/2023-07-19-useful-software.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
title: "常用软件记录"
date: 2023-07-19
description: 本文记录一下常用的软件以及下载地址
url: /archivers/2023-07-19/useful-software
tags: useful-software
---

<aside>
💡 本文介绍一下工作中以及日常生活常用的一些软件和下载链接,欢迎交流和推荐。

</aside>

### 操作系统-[镜像]

- Windows: [MSDN-ItellYou](https://msdn.itellyou.cn/) \ ✨[LTSC](http://www.microsoft.com/en-us/evalcenter/download-windows-10-enterprise) 系统比较纯净

> 推荐使用LTSC版本的操作系统,系统比较纯净,但需要激活
>
- Linux: [Arch Linux](https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2023.07.01/) / [Ubuntu](https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/releases/23.04/release/)

> 比较推荐直接去一些软件源上下载,这里举例清华源
>
### 操作系统工具-[Linux]

- 文档处理:[WPS Office](https://wiki.archlinux.org/title/WPS_Office)[Mousepad](https://archlinux.org/packages/extra/x86_64/mousepad/)
- 输入法:Fctix5
-https://github.com/Rvn0xsy/pacman-pkg

### 软件中心

- [腾讯软件中心](https://pc.qq.com/) *无广告和捆绑*

### 软件分析

- [CFF Explorer](https://ntcore.com/?page_id=388) *PE文件解析*
- [IDA](https://www.ida.org/) *二进制文件分析*
- [Dnspy](https://github.com/dnSpy/dnSpy) *C#程序反汇编分析*
- [X64Dbg](https://x64dbg.com/) *Windows二进制文件分析*

### 浏览器插件

-[TamperMonkey](https://www.tampermonkey.net/) *油猴插件*
-[AdGuard](https://adguard.com/zh_cn/download-extension/edge.html) *拦截广告*
-[Proxy SwitchyOmega](https://microsoftedge.microsoft.com/addons/detail/fdbloeknjpnloaggplaobopplkdhnikc) *代理切换*
-[Bitwarden](https://bitwarden.com/) *密码管理器*
-[Wappalyzer](https://www.wappalyzer.com/apps/?utm_source=popup&utm_medium=extension&utm_campaign=wappalyzer) *分析网站所使用的组件*

### 影视资源

- BT之家:btbtt15[.]com
- 樱花动漫:yinghuadongman[.]me


### 操作系统工具-[Windows]

- 备忘录:✨[Notion](https://www.notion.so/)
- 聊天工具:[微信](https://weixin.qq.com/)[Slack](https://slack.com/)、✨[飞书](https://www.feishu.cn/)
- 电子邮件:[Foxmail](https://www.foxmail.com/)
- 文档处理:[Microsoft Office](https://www.office.com/?omkt=zh-CN)[wps](https://www.wps.cn/)
- 密码管理:✨[Bitwarden](https://bitwarden.com/)
- 浏览器:[Google Chrome](https://www.google.com/chrome/)、✨[Microsoft Edge](https://www.microsoft.com/en-us/edge)
- 视频会议:✨[腾讯会议](https://meeting.tencent.com/)
- Microsoft To Do待办提醒:✨[To Do](https://todo.microsoft.com/zh-cn/)
- 文件查找搜索:[Everything](https://www.voidtools.com/zh-cn/)
- 抓包分析:[Wireshark](https://www.wireshark.org/) \ ✨[[镜像]Wireshark](https://mirrors.tuna.tsinghua.edu.cn/wireshark/win64/) 镜像下载较快 \ [Burpsuite](https://portswigger.net/burp/releases#professional)
- 代码编辑器:[VSCode](https://code.visualstudio.com/)\[加速下载]改变官网地址主地址为: [vscode.cdn.azure.cn](http://vscode.cdn.azure.cn/)
- 文件解压缩:[7zip](https://www.7-zip.org/)
- 屏幕录制:[OBS Studio](https://obsproject.com/)
- Git: [Git For Windows](https://git-scm.com/download/win) / [[加速]Git For Windows](https://pc.qq.com/detail/13/detail_22693.html)
- 虚拟化:Docker\VMWare\VirtualBox
- 脚本环境:[Java](https://adoptopenjdk.net/)

### 网页工具

- 编码解码:[CyberChef](https://gchq.github.io/CyberChef/)
- 正则表达式:[Regex101](https://regex101.com)
- ✨腾讯杂项在线工具:[杂项工具箱](https://tool.browser.qq.com/)
- 免费DNS-SSRF服务:[sslip.io](http://sslip.io/)
- 壁纸网站:[Bing壁纸库](https://bing.wdbyte.com/)
- IP地址查询:[ifconfig.me](https://www.ifconfig.me/)
- BT种子转换:cn[.]torrentkitty[.]best
135 changes: 135 additions & 0 deletions content/posts/2023/2023-07-23-appveyor-build-project.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
---
title: "使用Appveyor构建VS项目-快速编译"
date: 2023-07-23
description: 在工作中经常会看到一些做的比较好的C++开源项目,但是作者没有编写CI/CD去构建项目,发布Release版本的二进制文件,因此需要自己手动编译,但有时候又是临时的环境,还需要安装Visual Studio之类的IDE来构建,比较麻烦,因此appveyor可以支持各类语言的构建环境,只需要在网页上就可以发布二进制程序,解决了本地安装开发环境的痛点。
url: /archivers/2023-07-23/appveyor
tags: appveyor
---

## 前言

<aside>
📋 在工作中经常会看到一些做的比较好的C++开源项目,但是作者没有编写CI/CD去构建项目,发布Release版本的二进制文件,因此需要自己手动编译,但有时候又是临时的环境,还需要安装Visual Studio之类的IDE来构建,比较麻烦,因此appveyor可以支持各类语言的构建环境,只需要在网页上就可以发布二进制程序,解决了本地安装开发环境的痛点。

</aside>

## Appveyor简介

<aside>
💡 AppVeyor是一家成立于2011年的私人持有的加拿大公司。

我们为Windows开发人员提供持续集成工具。该服务是免费提供给开源项目使用的,我们为私有项目提供订阅服务,并在客户现场提供AppVeyor企业安装服务。

迄今为止,已有超过50,000名开发人员使用了AppVeyor,并运行了超过1000万次构建。AppVeyor受到微软、谷歌、Facebook、Mozilla、Slack、GitHub等公司的信任。

[About | AppVeyor](https://www.appveyor.com/about/)

</aside>

## 构建Github项目

AppVeyor提供了它特有的配置文件用于声明构建动作,开发者可以通过编写AppVeyor配置文件来控制程序的发布流程。

这里只讨论没有AppVeyor配置文件的项目,以https://github.com/goldshtn/etrace为例,etrace是一个命令行工具,用于实时跟踪 ETW 事件和 处理现有的 .etl 录制文件。它的灵感来自Microsoft [ELT](https://github.com/Microsoft/Microsoft.Diagnostics.Tracing.Logging/tree/master/utils/LogTool)工具。

![0](https://images.payloads.online/2024-07-29-5dc81fb4ac997c5b4bde39e315f39c8f87b29af725c22684aec2530770030f47.png)


该项目没有AppVeyor配置文件,首先Fork这个项目到自己账户名下,然后访问https://www.appveyor.com/,以Github账户登录,并且授权读取此仓库。

![1](https://images.payloads.online/2024-07-29-b3783ff0a64525ecfe7a180228595ce723443326cd8b6f720cf98246f0cd7b25.png)


在Github这一栏可以看到授权的仓库,点击 **+ADD** 就可以进入项目的构建配置界面:

![2](https://images.payloads.online/2024-07-29-0901705e6c5f3cc7db29338176b4c9558f1e87bf3a5e092df44706d38ae89b61.png)


由于这个项目是采用C#开发的,所以我们着重关注C#相关的配置:

![3](https://images.payloads.online/2024-07-29-1b7abdb53043453e086a25620f4411330f445299864c87d91beb53bc87a47890.png)


在Before build script中输入如下命令,会在开始编译之前去下载这个项目所依赖的库:

```bash
nuget restore
```

<aside>
💡 "nuget restore" 是NuGet命令行工具中的一个命令。它用于还原(restore)一个项目(project)所依赖的所有NuGet包(NuGet packages)。

在开发.NET应用程序时,通常会使用NuGet来管理项目所依赖的第三方库和组件。NuGet是.NET生态系统中最受欢迎的包管理器之一,它提供了一个中央存储库,开发人员可以从中获取各种软件包和库。

"nuget restore"命令会读取项目文件(.csproj或.vbproj)中的依赖关系,并下载或还原所需的NuGet包,以确保项目可以成功编译和构建。这个命令通常在CI/CD(持续集成/持续交付)过程中使用,以确保在构建项目之前,所有的依赖关系都被正确地还原和安装。

</aside>

除此之外,还可以在环境配置中设置安装开发库的命令:

![4](https://images.payloads.online/2024-07-29-d2dbacd81fcf3c3ae4c2d9dad8dbfaafff18b18a138d0b6d46d966c00c66e23c.png)


最后一步就是设置二进制文件打包了,点击artifacts,可以配置要打包的路径,必须是相对路径,C#的程序一般会将二进制文件生成到bin目录下,所以我这里就写:etrace\bin

![5](https://images.payloads.online/2024-07-29-250ee79944bc86c985221b13aee115fb153e56ca50d88d16799a3eebb3d29c44.png)


保存后,回到项目页面,点击Start New Build就开始构建了:

![6](https://images.payloads.online/2024-07-29-51d2f8ad59c102c96729da44ee8c88a28706eefb90c6a52e00e4ae94c055db8b.png)


稍微等待一下,就可以看到构建好的程序了,直接下载就可以使用。

![7](https://images.payloads.online/2024-07-29-71e3d69c746a01016da0b57aa98abcd4de9029ce06eec2f5ef3127062e78cb7d.png)


## 使用AppVeyor构建Mimikatz

Mimikatz是[gentilkiwi](https://github.com/gentilkiwi)使用C语言开发的Windows安全工具,该工具有着丰富的功能,能过从内存中提取明文密码,哈希,PIN码和kerberos票据、哈希传递等等,随着越来越多的黑客滥用此工具进行一些非法活动,因此[gentilkiwi](https://github.com/gentilkiwi)每发布一个Release,Release中的Mimikatz样本就会被标记为黑客工具,这对红队带来了一些小麻烦,通过AppVeyor我们可以自动化的做一些静态特征处理,然后自动构建产生新的工具。

gentilkiwi已经在Mimikatz项目中内置了一个AppVeyor的配置文件,这个配置文件会随着项目改动自动触发AppVeyor的构建流程。

![8](https://images.payloads.online/2024-07-29-0238150c9f7ae7a6d62517d0ec9e5beef84f2e8d1e8ba4110fc3a425d8ceb3c1.png)


我们要做的就是先Fork一份Mimikatz到自己的项目中,然后开始修改AppVeyor配置文件:

![9](https://images.payloads.online/2024-07-29-eed2a89c92d68e937b3d5989177a2671ac1b8178540e0fea812447eb0967a88c.png)


这里我只是做了一个工作,就是将代码中的所有Mimikatz字符串替换为aabbcc,当然还可以做很多其它的替换操作。

```powershell
ls;
Copy-Item C:\projects\mimikatz\mimikatz\mimikatz.ico C:\projects\mimikatz\mimikatz\aabbcc.ico;
(Get-ChildItem -Path "." -Recurse -File -Include *.h,*.c,*.vcxproj,*.rc) | ForEach-Object {
$newFileName = $_.Name -replace "mimikatz\.(h|c|rc)", "aabbcc.`$1"
$newPath = Join-Path -Path $_.Directory.FullName -ChildPath $newFileName
(Get-Content $_.FullName) | ForEach-Object {
$_ -ireplace "mimikatz", "aabbcc"
} | Set-Content $newPath
if ($newFileName -ne $_.Name) {
Remove-Item $_.FullName
}
Write-Host $newPath
};
ls mimikatz;
```

其中替换图标的操作可以改为从互联网下载某个地址的图标,这里就不赘述了。

我的配置文件地址:[mimikatz/appveyor.yml at master · Rvn0xsy/mimikatz (github.com)](https://github.com/Rvn0xsy/mimikatz/blob/master/appveyor.yml)

编译好的成品如下:

![10](https://images.payloads.online/2024-07-29-18c0cd95132052716e08d5844cb251b3db4c09f7487d1523a9e96868b54287de.png)


![11](https://images.payloads.online/2024-07-29-d9018d95f27c32bf006dc370d0994e10e4d4581b5adc4cff146abc3381b59298.png)


## 🥪总结

通过在线的CI/CD工具可以省去搭建环境的时间,由于CI/CD是事件触发的,每次改动都可以生成新的样本,相当于可以无限次的使用,若是有一些工具实在是非常敏感、静态特征多,可以像我这样写一个类似的批处理加入到CI/CD中做一些简单的对抗处理,本文仅仅是抛砖引玉,我相信还有更节约时间、更高效的方式。
151 changes: 151 additions & 0 deletions content/posts/2023/2023-08-07-clash-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
---
title: "记录一下配置Clash透明代理"
date: 2023-08-07
description: 日常办公和上网需要挂不同的代理,切换起来有点麻烦,所以记录一下配置Clash透明代理的流水账
url: /archivers/2023-08-07/clash-config
tags: clash
---

<aside>
😀 我日常使用Arch Linux来进行办公,但公司的办公网络和上网需要挂不同的代理,浏览器切换起来有点麻烦,我需要一个解决方案支持配置规则的方式来让我系统上的流量进行选择性的转发,我发现Clash+iptables(Linux用户独有的福利)可以非常简单的做到。

</aside>

# 📝Clash是什么?

https://github.com/Dreamacro/clash

Clash是一个支持多种协议隧道转发的工具,主要功能如下:

- Inbound: HTTP, HTTPS, SOCKS5 server, TUN device
- Outbound: Shadowsocks(R), VMess, Trojan, Snell, SOCKS5, HTTP(S), Wireguard
- Rule-based Routing: dynamic scripting, domain, IP addresses, process name and more
- Fake-IP DNS: minimises impact on DNS pollution and improves network performance
- Transparent Proxy: Redirect TCP and TProxy TCP/UDP with automatic route table/rule management
- Proxy Groups: automatic fallback, load balancing or latency testing
- Remote Providers: load remote proxy lists dynamically
- RESTful API: update configuration in-place via a comprehensive API

目前作者还在维护[高级核心版](https://dreamacro.github.io/clash/premium/introduction.html)(免费),为了尝试支持更多功能。

# 🪢关于透明代理

这里可以参考之前写过的一篇介绍:

[Linux透明代理在红队渗透中的应用 | 倾旋的博客](https://payloads.online/archivers/2020-11-13/1/)

# 配置Clash服务

这里需要注意的是需要设置redir-port,这个选项: *Linux 和 macOS 的透明代理服务端口 (TCP 和 TProxy UDP 重定向)*

```yaml
port: 7890
socks-port: 7891
allow-lan: true
redir-port: 7892
mode: Rule
log-level: info
external-controller: 127.0.0.1:9090
experimental:
interface-name: enp34s0 # your interface-name
dns:
enable: true
listen: 127.0.0.1:53
nameserver:
- 223.5.5.5
fallback:
- 'tls://1.1.1.1:853'
- 'tcp://1.1.1.1'
- 'tcp://208.67.222.222:443'
- 'tls://dns.google'
```
除此之外,最好编写一个服务文件,将Clash运行在其他用户身份下:
```
[Unit]
Description=clash daemon

[Service]
Type=simple
StandardError=journal
User=clash
Group=clash
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
ExecStart=/usr/bin/clash -d /home/arch/.config/clash
Restart=on-failure

[Install]
WantedBy=default.target
```

将服务文件拷贝到:/etc/systemd/system/

```
$ sudo systemctl daemon-reload # 重新扫描服务单元变更
$ sudo systemctl enable clash # 开机启动
$ sudo systemctl start clash # 启动Clash
```

设置DNS服务器地址,直接/etc/resolv.conf文件即可:

```
# /etc/resolv.conf
nameserver 127.0.0.1
```

# 配置iptables规则

在iptables中有一个owner模块,可以过滤指定用户的流量,对我们来说只需要将clash运行在一个单独的用户身份下,对这个用户的所有流量放行即可。

![0](https://images.payloads.online/2024-07-29-f3fe5de39caf1acc5768e1e07a6f58105a5754e7a95d912b73d6c7da2af6fae4.png)


iptables命令:

```
# 添加规则
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner clash ! -d 127.0.0.1 -j REDIRECT --to-port 7892
# 删除规则
sudo iptables -t nat -D OUTPUT -p tcp -m owner ! --uid-owner clash ! -d 127.0.0.1 -j REDIRECT --to-port 7892
```

这个命令的意思是将所有不属于用户ID为"clash"的TCP流量重定向到端口7892。

# 配置Clash规则

```yaml
proxies:
- ...server1
- ...server2
proxy-groups:
- name: ProxyChian1
type: select
proxies:
- server1
- DIRECT
- name: ProxyChian2
type: select
proxies:
- DIRECT
- name: 工作环境
type: select
proxies:
- server1
rules:
- DOMAIN-SUFFIX,local,ProxyChian2
- DOMAIN-SUFFIX,localhost,ProxyChian2
- DOMAIN-SUFFIX,payloads.online,工作环境
- IP-CIDR,10.10.0.0/16,工作环境,no-resolve
- IP-CIDR,10.20.0.0/24,工作环境,no-resolve
- .....
```
通过rules可以配置不同的DNS域名、IP-CIDR目标地址的流量该走到哪个代理链上,这里我的规则仅仅只是示例,为了达到更好的网络体验,规则是上达几百行的。
![1](https://images.payloads.online/2024-07-29-6530f58ed8ca3b853ddd4f691bc570234ca5738c3ff21958ce688559d1355bc1.png)
如此一来,工作/上网问题不需要切换代理解决了。
Loading

0 comments on commit 3a525c1

Please sign in to comment.