It sounds like you're not really talking about a laser beam but instead about a gun shooting a bright projectile that reflects off the surface, and you then want to watch it bounce around the box. (Well, at least that's the problem I'm answering!) There are more complicated, efficient, general, accurate, etc, methods, but there's an easy solution to the problem, especially when the box has perpendicular walls (i.e. a normal box):
Using the direction that the gun is fired, find the three velocity components, (vx, vy, vz), and at each timestep while you're drawing the bullet, update it's position x+=dt*vx, y+=dt*vy, z+=dt*vz, and keep doing this until you hit a wall. When you hit a wall, just reverse the appropriate component of the velocity vector, e.g. if you hit the wall parallel to the y-z plane, take vx to -vx. And just keep going the same way until you hit another wall, and then reverse the appropriate component again...
Here's an example in 2D, just so I can show a plot, but 3D is exactly the same with this simple method. I show both the full path in black, and highlight some sections of it in red. Also, the example's in python, but the only import key lines (x+=dt*vx,...) probably won't require much in translation:
from pylab import *
from collections import deque
dt = .01
x, y = .5, .5
vx, vy = .233, .61
data = deque(maxlen=100)
all_data = []
for i in range(6000):
x += dt*vx
y += dt*vy
if x<0 or x>1:
vx = -vx
if y<0 or y>1:
vy = -vy
# store data and plot
data.append((x, y))
all_data.append((x, y))
if i%400==0:
plot(*zip(*data), color='r', linewidth=4)
plot(*zip(*all_data), color='k')
show()
Like I said, not so efficient, but very easy.