#shell #client-server #encryption #noise #security

app ghost_shell

一个轻量级且快速的远程shell,为客户端和服务器之间提供安全的通信

2个版本

0.1.1 2023年9月14日
0.1.0 2023年2月19日

#32 in #noise

MIT 协议

20KB
315

Ghost_Shell

GitHub GitHub issues GitHub Repo stars GitHub last commit Maintenance

Ghost Shell是一个轻量级且快速的远程shell,为客户端和服务器之间提供安全的通信。通信信道使用Noise_NNpsk0_25519_AESGCM_SHA256噪声协议加密,并使用SHA256生成预共享密钥。

噪声协议为构建加密通道提供了一个框架,Ghost Shell使用它来确保客户端和服务器之间的通信安全。预共享密钥通过SHA256哈希函数生成,确保安全密钥交换。加密算法AES-GCM提供带有附加数据的认证加密(AEAD),确保数据完整性、真实性和机密性。这些措施提供了端到端安全,保护免受监听、篡改和伪造消息的威胁。

需求

Rust(1.48或更高版本)

构建和运行

要构建项目,运行以下命令

git clone https://github.com/unclesp1d3r/ghost_shell.git
cd ghost_shell
cargo build --release

要运行服务器,使用以下命令并传递密码作为第一个参数

./target/release/server <password>

要运行客户端,使用以下命令并传递密码作为第一个参数

./target/release/client <password>

连接到服务器后,客户端可以向服务器发送shell命令,服务器将执行命令并将输出返回给客户端。客户端还可以通过发送退出命令来退出连接。

支持命令

Ghost Shell目前支持以下命令

  • echo:回显提供的参数。
  • exec:在服务器上执行命令并返回输出。
  • exit:退出远程shell并终止连接。

未来可能还会添加其他命令。

安全

Ghost Shell使用Noise_NNpsk0_25519_AESGCM_SHA256噪声协议加密客户端和服务器之间的通信信道。此协议提供端到端安全,保护免受监听、篡改和伪造消息的威胁。

Noise_NNpsk0_25519_AESGCM_SHA256协议使用椭圆曲线Diffie-Hellman密钥协商和Curve25519,这是一种强大且高效的密钥交换机制。预共享密钥通过SHA256哈希函数生成,确保安全密钥交换。加密算法AES-GCM提供带有附加数据的认证加密(AEAD),确保数据完整性、真实性和机密性。

注意事项

虽然我们已经采取了措施来确保通信通道的安全性,但需要注意的是,没有任何安全解决方案是万无一失的。因此,Ghost Shell可能容易受到暴力破解密码或针对特定实现的攻击。

此外,Ghost Shell仍在开发中,尚未经过任何形式的审计。因此,我们不推荐在生产环境中使用它,除非首先进行全面的安全审查。

贡献

我们欢迎以拉取请求的形式为Ghost Shell做出贡献。如果您发现了一个错误,或对新的功能有想法,我们鼓励您提交一个拉取请求。在提交拉取请求之前,请确保您的代码遵循Rust编程语言风格指南,并且通过了所有测试。

要提交拉取请求,请分支仓库,进行更改,然后提交拉取请求。我们将审查您的更改并提供反馈。如果您的更改被接受,我们将将其合并到主分支。

免责声明

请注意,Ghost Shell是一个为了教育和研究目的而创建的业余项目。它不应用于恶意目的,我们不赞成使用此软件进行任何非法或不道德的活动。

许可证

本项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。

依赖关系

~11–22MB
~379K SLoC